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

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -