#1
authoradam <anton@adamansky.com>
Fri, 2 Nov 2012 11:24:30 +0000 (18:24 +0700)
committeradam <anton@adamansky.com>
Fri, 2 Nov 2012 11:24:30 +0000 (18:24 +0700)
node/ejdb.js
node/tests/t2.js

index 4df9ae1..dec707b 100644 (file)
@@ -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);
+        }
+    });
 };
 
 
index 52eaa86..6f8c5ad 100644 (file)
@@ -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();
     });
 };