Add _like operator, credit goes to @tony-kerz for the idea

This commit is contained in:
Typicode
2015-12-13 15:43:05 +01:00
parent 3f933b06e6
commit a38d748fe0
5 changed files with 35 additions and 6 deletions

View File

@ -74,7 +74,8 @@ module.exports = function (db, name) {
query === '_' ||
query.indexOf('_lte') !== -1 ||
query.indexOf('_gte') !== -1 ||
query.indexOf('_ne') !== -1
query.indexOf('_ne') !== -1 ||
query.indexOf('_like') !== -1
) return
}
delete req.query[query]
@ -109,12 +110,12 @@ module.exports = function (db, name) {
.map(function (value) {
var isDifferent = key.indexOf('_ne') !== -1
var isRange = key.indexOf('_lte') !== -1 || key.indexOf('_gte') !== -1
var path = key.replace(/(_lte|_gte|_ne)$/, '')
var elementValue
var isLike = key.indexOf('_like') !== -1
var path = key.replace(/(_lte|_gte|_ne|_like)$/, '')
var elementValue = _.get(element, path)
if (isRange) {
var isLowerThan = key.indexOf('_gte') !== -1
elementValue = _.get(element, path)
if (isLowerThan) {
return value <= elementValue
@ -122,8 +123,9 @@ module.exports = function (db, name) {
return value >= elementValue
}
} else if (isDifferent) {
elementValue = _.get(element, path)
return value !== elementValue
} else if (isLike) {
return new RegExp(value).test(elementValue)
} else {
return _.matchesProperty(key, value)(element)
}