angularjs - How to insert array to mongodb using node.js -
i have array [ 570dec75cf30bf4c09679deb, 56fe44836ce2226431f5388f ]
. want insert new collection named notifications
{ "_id": objectid("57bd39c9734ff3602a312b33"), "userid": objectid("570dec75cf30bf4c09679deb") } , { "_id": objectid("57bd39c8734ff3602a312b32"), "userid": objectid("56fe44836ce2226431f5388f ") }
i have written query in node.js insert inserting last element of array 2 times this
{ "_id": objectid("57bd39c9734ff3602a312b33"), "userid": objectid("56fe44836ce2226431f5388f ") } , { "_id": objectid("57bd39c8734ff3602a312b32"), "userid": objectid("56fe44836ce2226431f5388f ") }
the query have written this
app.js
router.post('/creatlist', function(req,res){ console.log(req.body.email); var emails = req.body.email; if(req.body.wdata.wishlisttype == 'shared'){ var findusers = function(db, callback) { var cursor; cursor = db.collection('users').find({email: { $in: emails }}) cursor.toarray(function(err, docs){ if(err){ callback(new error("some problem")); } else { callback(null,docs); } }); }; mongoclient.connect(config.database, function(err, db) { assert.equal(null, err); findusers(db, function(err,docs) { db.close(); console.log(docs); for(var key in docs){ console.log(key); var ids = docs[key]._id; console.log(ids); var insertdocument = function(db, callback) { db.collection('notifications').insert({ "userid" : ids, },function(err, result) { assert.equal(err, null); console.log("inserted document notifications collection."); callback(); }); }; mongoclient.connect(config.database, function(err, db) { assert.equal(null, err); insertdocument(db, function() { db.close(); }); }); } }); }); });
you need remap results users.find() match schema notifications collection. should work:
var docstoinsert = docs.map(function (doc) { // assumes users collection has _id want use reference notifications.userid field // actually, want "return {"userid": objectid(doc._id)};" since using native mongodb api return { "userid": doc._id }; });
so, simplifying have rest bit, be:
router.post('/creatlist', function (req, res) { console.log(req.body.email); var emails = req.body.email; if (req.body.wdata.wishlisttype == 'shared') { var findusers = function (db, callback) { var cursor; cursor = db.collection('users').find({ email: { $in: emails } }); cursor.toarray(function (err, docs) { if (err) { callback(new error("some problem")); } else { callback(null, docs); } }); }; mongoclient.connect(config.database, function (err, db) { assert.equal(null, err); findusers(db, function (err, docs) { db.close(); console.log(docs); var docstoinsert = docs.map(function (doc) { // assumes users collection has _id want use reference notifications.userid field // actually, want "return {"userid": objectid(doc._id)};" since using native mongodb api return { "userid": doc._id }; }); mongoclient.connect(config.database, function (err, db) { assert.equal(null, err); db.collection("notifications").insert(docstoinsert, function (err, result) { if (err) { // handle err throw err; } db.close(); }); }); }); }); } });
Comments
Post a Comment