Merge pull request #101 from ryancrosser/master

Expanded Querying
This commit is contained in:
typicode
2015-05-25 11:00:27 +02:00
3 changed files with 30 additions and 7 deletions

View File

@ -14,12 +14,13 @@
"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": "^1.8.3",
"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

@ -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
} }
} }
@ -101,7 +101,8 @@ module.exports = function (source) {
filters[key] = utils.toNative(req.query[key]) filters[key] = utils.toNative(req.query[key])
} }
} }
console.log(filters)
console.log()
// Filter // Filter
if (_(filters).isEmpty()) { if (_(filters).isEmpty()) {
array = db(req.params.resource).value() array = db(req.params.resource).value()

View File

@ -9,8 +9,8 @@ var pluralize = require('pluralize')
function toNative (value) { function toNative (value) {
if (typeof value === 'string') { if (typeof value === 'string') {
if (value === '' if (value === ''
|| value.trim() !== value || value.trim() !== value
|| (value.length > 1 && value[0] === '0')) { || (value.length > 1 && value[0] === '0')) {
return value return value
} else if (value === 'true' || value === 'false') { } else if (value === 'true' || value === 'false') {
return value === 'true' return value === 'true'
@ -44,7 +44,7 @@ function createId (coll) {
// Example: a comment that references a post that doesn't exist // Example: a comment that references a post that doesn't exist
function getRemovable (db) { function getRemovable (db) {
var removable = [] var removable = []
console.log(db)
_(db).each(function (coll, collName) { _(db).each(function (coll, collName) {
_(coll).each(function (doc) { _(coll).each(function (doc) {
_(doc).each(function (value, key) { _(doc).each(function (value, key) {
@ -66,8 +66,29 @@ function getRemovable (db) {
return removable return removable
} }
function deepQuery (value, q) {
if (value && q) {
if (_.isArray(value)) {
for (var i = 0; i < value.length; i++) {
if (deepQuery(value[i], q)) {
return true
}
}
} else if (_.isObject(value) && !_.isArray(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
} }