| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 |
3×
3×
3×
3×
1×
1×
1×
1×
1×
1×
1×
1×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
| /**
* Finder Helper Queries
*
* (these call other collection-level methods)
*/
var usageError = require('../../utils/usageError');
var utils = require('../../utils/helpers');
var normalize = require('../../utils/normalize');
module.exports = {
// Return models where ALL of the specified attributes match queryString
findOneLike: function(criteria, options, cb) {
var usage = utils.capitalize(this.identity) + '.findOneLike([criteria],[options],callback)';
// Normalize criteria
criteria = normalize.likeCriteria(criteria, this._schema.schema);
Iif (!criteria) return usageError('Criteria must be an object!', usage, cb);
this.findOne(criteria, options, cb);
},
findLike: function(criteria, options, cb) {
var usage = utils.capitalize(this.identity) + '.findLike([criteria],[options],callback)';
// Normalize criteria
criteria = normalize.likeCriteria(criteria, this._schema.schema);
Iif (!criteria) return usageError('Criteria must be an object!', usage, cb);
this.find(criteria, options, cb);
},
// Return models where >= 1 of the specified attributes start with queryString
startsWith: function(criteria, options, cb) {
var usage = utils.capitalize(this.identity) + '.startsWith([criteria],[options],callback)';
criteria = normalize.likeCriteria(criteria, this._schema.schema, function applyStartsWith(criteria) {
return criteria + '%';
});
Iif (!criteria) return usageError('Criteria must be an object!', usage, cb);
this.find(criteria, options, cb);
},
// Return models where >= 1 of the specified attributes end with queryString
endsWith: function(criteria, options, cb) {
var usage = utils.capitalize(this.identity) + '.startsWith([criteria],[options],callback)';
criteria = normalize.likeCriteria(criteria, this._schema.schema, function applyEndsWith(criteria) {
return '%' + criteria;
});
Iif (!criteria) return usageError('Criteria must be an object!', usage, cb);
this.find(criteria, options, cb);
},
// Return models where >= 1 of the specified attributes contain queryString
contains: function(criteria, options, cb) {
var usage = utils.capitalize(this.identity) + '.startsWith([criteria],[options],callback)';
criteria = normalize.likeCriteria(criteria, this._schema.schema, function applyContains(criteria) {
return '%' + criteria + '%';
});
Iif (!criteria) return usageError('Criteria must be an object!', usage, cb);
this.find(criteria, options, cb);
}
};
|