From 62ab77b6651ee003e6ffc3e4515a9b9cfacb0dba Mon Sep 17 00:00:00 2001 From: adam Date: Fri, 2 Nov 2012 18:24:30 +0700 Subject: [PATCH] #1 --- node/ejdb.js | 23 ++++++++++++++++++----- node/tests/t2.js | 7 +++++-- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/node/ejdb.js b/node/ejdb.js index 4df9ae1..dec707b 100644 --- a/node/ejdb.js +++ b/node/ejdb.js @@ -44,14 +44,27 @@ EJDB.prototype.save = function(cname, jsarr, cb) { if (!jsarr) { return; } - if (!cb) { - cb = function() { - }; - } if (jsarr.constructor !== Array) { jsarr = [jsarr]; } - return this._impl.save(cname, jsarr, cb); + return this._impl.save(cname, jsarr, function(err, oids) { + if (err) { + if (cb) { + cb(err); + } + return; + } + //Assign _id property for newly created objects + for (var i = jsarr.length - 1; i >= 0; --i) { + var so = jsarr[i]; + if (so != null && so["_id"] !== oids[i]) { + so["_id"] = oids[i]; + } + } + if (cb) { + cb(err, oids); + } + }); }; diff --git a/node/tests/t2.js b/node/tests/t2.js index 52eaa86..6f8c5ad 100644 --- a/node/tests/t2.js +++ b/node/tests/t2.js @@ -25,10 +25,13 @@ module.exports.testSaveLoad = function(test) { "age" : 15, "likes" : ["sugar cane"] }; - jb.save("parrots", [parrot1, parrot2], function(err, oids) { + jb.save("parrots", [parrot1, null, parrot2], function(err, oids) { test.ifError(err); test.ok(oids); - test.equal(oids.length, 2); + test.equal(oids.length, 3); + test.equal(parrot1["_id"], oids[0]); + test.ok(oids[1] == null); + test.equal(parrot2["_id"], oids[2]); test.done(); }); }; -- 2.7.4