Comparing version 0.0.3 to 0.0.4
@@ -24,3 +24,3 @@ var Error = require('./error'); | ||
var BorgDB = { | ||
allowedOperators: ["$in"], | ||
allowedOperators: ["$in", "$exists"], | ||
init: function(driver, params, callback) { | ||
@@ -66,12 +66,26 @@ driver = driver.toLowerCase(); | ||
}, | ||
find: function(what, collection_name, options, callback) { | ||
callback = callback || options; | ||
find: function(query, collection_name, options, callback) { | ||
if(typeof options === 'function') { | ||
callback = options; | ||
options = {}; | ||
} | ||
if (Object.keys(drivers).length > 0) driver = drivers[Object.keys(drivers)[0]]; | ||
if (this.schemas[collection_name]) { | ||
//check to make sure the params are even valid for the schema | ||
if (getBadSpecialKeys(query, BorgDB.allowedOperators).length > 0) { | ||
throw Error('The following operators/keys are not allowed in your DB queries: ' + getBadSpecialKeys(query, BorgDB.allowedOperators)); | ||
} | ||
if (getBadSpecialKeys(what, BorgDB.allowedOperators).length > 0) { | ||
throw Error('The following operators/keys are not allowed in your DB queries: ' + getBadSpecialKeys(where, BorgDB.allowedOperators)); | ||
if (this.schemas[collection_name]) { | ||
options.join = []; | ||
for(var prop in this.schemas[collection_name].properties) { | ||
if(this.schemas[collection_name].properties[prop].ref !== undefined) { | ||
options.join.push({ | ||
field: prop, | ||
collection: this.hooks['collection_name'] ? this.hooks['collection_name'](this.schemas[collection_name].properties[prop].ref) : this.schemas[collection_name].properties[prop].ref | ||
}); | ||
} | ||
} | ||
} | ||
@@ -81,3 +95,3 @@ | ||
return driver.find(what, collection_name, options, callback); | ||
return driver.find(query, collection_name, options, callback); | ||
}, | ||
@@ -84,0 +98,0 @@ create: function(collection_name, data, callback) { |
var mongo = require('mongoskin'), | ||
Join = require('mongo-join').Join, | ||
objectDiff = require('objectdiff'), | ||
@@ -45,14 +46,33 @@ Error = require('../error'), | ||
find: function(spec, bucket, options, callback) { | ||
if (!callback) { | ||
callback = options; | ||
options = {}; | ||
var joins; | ||
if(options.join) { | ||
joins = options.join; | ||
delete options.join; | ||
} | ||
if (options.limit === 1) { | ||
DB.collection(bucket).findOne(spec, callback); | ||
if (options.limit && options.limit === 1) { | ||
DB.collection(bucket).findOne(spec, function(err, doc) { | ||
callback(err, [doc]); | ||
}); | ||
} else { | ||
DB.collection(bucket).find(spec, function(err, rs) { | ||
if (err) return callback(err); | ||
DB.collection(bucket).find(spec, function(err, cursor) { | ||
if(joins) { | ||
//console.log(DB._dbconn); | ||
//console.log(DB.db); | ||
rs.toArray(callback); | ||
var join = new Join(DB._dbconn); | ||
for(var i=0; i<joins.length; i++) { | ||
join.on({ | ||
field: joins[i].field, | ||
to: '_id', | ||
from: joins[i].collection | ||
}); | ||
} | ||
join.toArray(cursor, callback); | ||
} else { | ||
cursor.toArray(callback); | ||
} | ||
}); | ||
@@ -59,0 +79,0 @@ } |
{ | ||
"name": "borgdb", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"description": "A DB agnostic NoSQL DB abstraction layer - NOT PRODUCTION READY", | ||
@@ -5,0 +5,0 @@ "main": "./lib/BorgDB.js", |
18247
475