replaced underscore with lodash, expanded querying capability to search through nested objects and arrays

This commit is contained in:
Ryan Crosser
2015-05-23 10:26:56 -04:00
parent 7af6e40a84
commit db7712ac11
3 changed files with 44 additions and 23 deletions

View File

@ -14,12 +14,12 @@
"errorhandler": "^1.2.0", "errorhandler": "^1.2.0",
"express": "^4.9.5", "express": "^4.9.5",
"got": "^1.2.2", "got": "^1.2.2",
"lodash": "^3.9.1",
"lowdb": "^0.7.1", "lowdb": "^0.7.1",
"method-override": "^2.1.2", "method-override": "^2.1.2",
"morgan": "^1.3.1", "morgan": "^1.3.1",
"node-uuid": "^1.4.2", "node-uuid": "^1.4.2",
"pluralize": "^1.1.2", "pluralize": "^1.1.2",
"underscore": "^1.5.2",
"underscore-db": "^0.8.0", "underscore-db": "^0.8.0",
"update-notifier": "^0.2.2", "update-notifier": "^0.2.2",
"yargs": "^1.3.1" "yargs": "^1.3.1"

View File

@ -1,7 +1,7 @@
var express = require('express') var express = require('express')
var methodOverride = require('method-override') var methodOverride = require('method-override')
var bodyParser = require('body-parser') var bodyParser = require('body-parser')
var _ = require('underscore') var _ = require('lodash')
var low = require('lowdb') var low = require('lowdb')
var pluralize = require('pluralize') var pluralize = require('pluralize')
var utils = require('./utils') var utils = require('./utils')
@ -78,7 +78,7 @@ module.exports = function (source) {
array = db(req.params.resource).filter(function (obj) { array = db(req.params.resource).filter(function (obj) {
for (var key in obj) { for (var key in obj) {
var value = obj[key] var value = obj[key]
if (_.isString(value) && value.toLowerCase().indexOf(q) !== -1) { if(utils.deepQuery(value, q)){
return true return true
} }
} }

View File

@ -1,4 +1,4 @@
var _ = require('underscore') var _ = require('lodash')
var uuid = require('node-uuid') var uuid = require('node-uuid')
var pluralize = require('pluralize') var pluralize = require('pluralize')
@ -66,8 +66,29 @@ function getRemovable (db) {
return removable return removable
} }
function deepQuery(value, q) {
if(value) {
if(_.isArray(value)) {
for(var i = 0; i < value.length; i++) {
if(deepQuery(value[i], q)) {
return true
}
}
} else if(_.isPlainObject(value)) {
for(var k in value) {
if(deepQuery(value[k], q)) {
return true
}
}
} else if(value.toString().toLowerCase().indexOf(q) !== -1) {
return true;
}
}
}
module.exports = { module.exports = {
toNative: toNative, toNative: toNative,
createId: createId, createId: createId,
getRemovable: getRemovable getRemovable: getRemovable,
deepQuery: deepQuery
} }