Skip to content

Commit

Permalink
using Mongo ObjectIds instead of confusing uid keys for addressbook r…
Browse files Browse the repository at this point in the history
…ecords

Signed-off-by: Wouter Vroege <wouter@woutervroege.nl>
  • Loading branch information
woutervroege committed Feb 23, 2013
1 parent 4c5744a commit 26f96d1
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 39 deletions.
2 changes: 1 addition & 1 deletion examples/addressbookserver.js
Expand Up @@ -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);
Expand Down
1 change: 0 additions & 1 deletion examples/data/addressbook/mongo.js
Expand Up @@ -19,7 +19,6 @@ exports.init = function (mongo, skipInit, callback) {

var collections = {
addressbooks: [{
"uid": 1,
"principaluri": "principals/admin",
"displayname": "default addressbook",
"uri": "admin",
Expand Down
37 changes: 11 additions & 26 deletions lib/CardDAV/backends/mongo.js
Expand Up @@ -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;
},

/**
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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);
})

},

/**
Expand All @@ -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);
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
26 changes: 15 additions & 11 deletions lib/DAVACL/backends/mongo.js
Expand Up @@ -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)
}
)
},

/**
Expand Down Expand Up @@ -340,6 +345,5 @@ var jsDAVACL_Backend_Mongo = module.exports = jsDAVACL_iBackend.extend({
})
}
})

}
});
18 changes: 18 additions & 0 deletions 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);
})


})

0 comments on commit 26f96d1

Please sign in to comment.