diff --git a/index.js b/index.js index 690fd8a..c8be10b 100644 --- a/index.js +++ b/index.js @@ -37,12 +37,6 @@ var getCallback = function(args) { return typeof callback === 'function' ? callback : noop; }; -var truncateCallback = function(callback) { - return function(err) { - callback(err); - }; -}; - // Proxy for the native cursor prototype that normalizes method names and // arguments to fit the mongo shell. @@ -196,13 +190,19 @@ Collection.prototype.remove = function() { this._apply(DRIVER_COLLECTION_PROTO.remove, arguments.length === 0 ? [{}, noop] : replaceCallback(arguments, callback)); }; -Collection.prototype.insert = function() { - var callback = truncateCallback(getCallback(arguments)); - this._apply(DRIVER_COLLECTION_PROTO.insert, replaceCallback(arguments, callback)); -}; - Collection.prototype.save = function() { - var callback = truncateCallback(getCallback(arguments)); + var self = this; + var args = arguments; + var fn = getCallback(arguments); + + var callback = function(err, doc) { + if (err) return fn(err); + if (doc === 1) { + fn(err, args[0]); + } else { + fn(err, doc); + } + } this._apply(DRIVER_COLLECTION_PROTO.save, replaceCallback(arguments, callback)); }; diff --git a/tests/test-insert.js b/tests/test-insert.js new file mode 100644 index 0000000..a4fe7d2 --- /dev/null +++ b/tests/test-insert.js @@ -0,0 +1,10 @@ +var assert = require('assert'); +var mongojs = require('../index'); +var db = mongojs('test', ['a','b']); + +db.a.insert([{name: "Squirtle"}, {name: "Charmander"}, {name: "Bulbasaur"}], function(err, docs) { + assert.ok(docs[0]._id); + assert.ok(docs[1]._id); + assert.ok(docs[2]._id); + db.close(); +}); diff --git a/tests/test-save.js b/tests/test-save.js new file mode 100644 index 0000000..7225437 --- /dev/null +++ b/tests/test-save.js @@ -0,0 +1,17 @@ +var assert = require('assert'); +var mongojs = require('../index'); +var db = mongojs('test', ['a','b']); + +db.a.save({hello: "world"}, function(err, doc) { + assert.equal(doc.hello, "world"); + assert.ok(doc._id); + + doc.hello = "verden"; + db.a.save(doc, function(err, doc) { + assert.ok(doc._id); + assert.equal(doc.hello, "verden") + db.a.remove(function() { + db.close(); + }); + }); +}); diff --git a/tests/test-update-and-callback.js b/tests/test-update-and-callback.js index 3c1e2ae..8be9bc4 100644 --- a/tests/test-update-and-callback.js +++ b/tests/test-update-and-callback.js @@ -14,4 +14,4 @@ insert([{ done(); }); sync = false; -}); \ No newline at end of file +});