From 26f96d1731f496eeb19a487125314dd89504dd44 Mon Sep 17 00:00:00 2001 From: Wouter Vroege Date: Sat, 23 Feb 2013 14:02:28 +0100 Subject: [PATCH] using Mongo ObjectIds instead of confusing uid keys for addressbook records Signed-off-by: Wouter Vroege --- examples/addressbookserver.js | 2 +- examples/data/addressbook/mongo.js | 1 - lib/CardDAV/backends/mongo.js | 37 +++++++++--------------------- lib/DAVACL/backends/mongo.js | 26 ++++++++++++--------- test/test_mongoId.js | 18 +++++++++++++++ 5 files changed, 45 insertions(+), 39 deletions(-) create mode 100644 test/test_mongoId.js diff --git a/examples/addressbookserver.js b/examples/addressbookserver.js index de8b6823..121b9988 100644 --- a/examples/addressbookserver.js +++ b/examples/addressbookserver.js @@ -55,7 +55,7 @@ Db.getConnection(DB_ARGS, function (err, conn) { var db = conn; - DB_INIT.init(db, true, function (err) { + DB_INIT.init(db, false, function (err) { if (err) throw err; var authBackend = jsDAV_Auth_Backend.new(db); diff --git a/examples/data/addressbook/mongo.js b/examples/data/addressbook/mongo.js index f1af24b4..079168b3 100644 --- a/examples/data/addressbook/mongo.js +++ b/examples/data/addressbook/mongo.js @@ -19,7 +19,6 @@ exports.init = function (mongo, skipInit, callback) { var collections = { addressbooks: [{ - "uid": 1, "principaluri": "principals/admin", "displayname": "default addressbook", "uri": "admin", diff --git a/lib/CardDAV/backends/mongo.js b/lib/CardDAV/backends/mongo.js index 52105e16..62bfcb58 100644 --- a/lib/CardDAV/backends/mongo.js +++ b/lib/CardDAV/backends/mongo.js @@ -50,6 +50,7 @@ var jsCardDAV_Backend_Mongo = module.exports = jsCardDAV_iBackend.extend({ this.mongo = mongo; this.addressBooksTableName = addressBooksTableName || "addressbooks"; this.cardsTableName = cardsTableName || "cards"; + this.BSON = require('mongodb').BSONPure; }, /** @@ -71,7 +72,7 @@ var jsCardDAV_Backend_Mongo = module.exports = jsCardDAV_iBackend.extend({ var addressBooks = []; docs.forEach(function (doc) { addressBooks.push({ - id: doc.uid, + id: doc._id, uri: doc.uri, principaluri: doc.principaluri, '{DAV:}displayname': doc.displayname, @@ -118,7 +119,7 @@ var jsCardDAV_Backend_Mongo = module.exports = jsCardDAV_iBackend.extend({ var self = this; self.mongo.collection(self.addressBooksTableName).update({ - uid: addressBookId + _id: new self.BSON.ObjectID(addressBookId) }, { $set: { displayname: updates.displayname, @@ -172,27 +173,11 @@ var jsCardDAV_Backend_Mongo = module.exports = jsCardDAV_iBackend.extend({ var self = this; - - self.mongo.collection(self.addressBooksTableName).find({}).sort({ - uid: -1 - }).limit(1).toArray(function (err, docs) { - + self.mongo.collection(self.addressBooksTableName).insert(values, function (err, doc) { if (err) - return callback(err); - else if (!docs || docs.length) - values.uid = 1; - else - values.uid = docss[0].uid++; - - - self.mongo.collection(self.addressBooksTableName).insert(values, function (err, doc) { - if (err) - return callback(err) - callback(null, doc); - }) - + return callback(err) + callback(null, doc); }) - }, /** @@ -206,13 +191,13 @@ var jsCardDAV_Backend_Mongo = module.exports = jsCardDAV_iBackend.extend({ var self = this; self.mongo.collection(self.addressBooksTableName).remove({ - uid: addressBookId + _id: new self.BSON.ObjectID(addressBookId) }, function (err) { if (err) return callback(err); else { self.mongo.collection(self.cardsTableName).remove({ - addressbookid: addressBookId + addressbookid: new self.BSON.ObjectID(addressBookId) }, function (err) { if (err) return callback(err); @@ -342,7 +327,7 @@ var jsCardDAV_Backend_Mongo = module.exports = jsCardDAV_iBackend.extend({ return callback(err); else { self.mongo.collection(self.addressBooksTableName).update({ - uid: addressBookId + _id: addressBookId }, { $inc: { ctag: 1 @@ -399,7 +384,7 @@ var jsCardDAV_Backend_Mongo = module.exports = jsCardDAV_iBackend.extend({ return callback(err); else { self.mongo.collection(self.addressBooksTableName).update({ - uid: addressBookId + _id: addressBookId }, { $inc: { ctag: 1 @@ -430,7 +415,7 @@ var jsCardDAV_Backend_Mongo = module.exports = jsCardDAV_iBackend.extend({ return callback(err); else { self.mongo.collection(self.addressBooksTableName).update({ - uid: addressBookId + _id: addressBookId }, { $inc: { ctag: 1 diff --git a/lib/DAVACL/backends/mongo.js b/lib/DAVACL/backends/mongo.js index 15bbb23f..611c4b6f 100644 --- a/lib/DAVACL/backends/mongo.js +++ b/lib/DAVACL/backends/mongo.js @@ -212,16 +212,21 @@ var jsDAVACL_Backend_Mongo = module.exports = jsDAVACL_iBackend.extend({ updateAble[this.fieldMap[key]] = value; } - var command = [this.tableName + "/" + path]; - for (key in updateAble) - command.push(key, updateAble[key]); - command.push(function(err) { - if (err) - return callback(err, false); - callback(null, true); - }); - - this.mongo.hmset.apply(this.mongo, command); + self.mongo.collection(this.tableName).update( + { + uri: path + }, + { + $set: { + //setting vars + } + }, function(err, docs) { + if(err) + return callback(err) + else + callback(null, true) + } + ) }, /** @@ -340,6 +345,5 @@ var jsDAVACL_Backend_Mongo = module.exports = jsDAVACL_iBackend.extend({ }) } }) - } }); diff --git a/test/test_mongoId.js b/test/test_mongoId.js new file mode 100644 index 00000000..5d739328 --- /dev/null +++ b/test/test_mongoId.js @@ -0,0 +1,18 @@ +var mongo = require('mongodb'), + server = new mongo.Server('localhost', 27017, {auto_reconnect : true}), + db = new mongo.Db('testjs', server, {safe:true}), + BSON = mongo.BSONPure; + +db.open(function() { + + db.collection("notes").update( + {_id: "5128addc99f186968ef971af"}, + {$set: {content: "testje5"}}, function(err) { + }) + + db.collection("notes").findOne({_id: new BSON.ObjectID("5128addc99f186968ef971af")}, function(err, doc) { + console.log(doc); + }) + + +})