如何在节点中的mongodb上更新后得到结果数组数据?

时间:2015-09-27 10:10:39

标签: node.js mongodb

以下是我的代码

var mongodb = require('mongodb');
var MongodbClient = mongodb.MongoClient;

MongodbClient.connect('mongodb://localhost/test', function(err, db) {
    if(!err){
        console.log("We are connected!!");
    }

    var contact = db.collection('contact');

    contact.update({name: "Fred"}, {$set: {tel:'09088oooxxaa'}}, function(err,r) {
       if(err){
           console.log("Update err");
       }
       else{
           console.log('Update success');
           console.log(r.name);
       }
   });

   contact.find({name: "Fred"}).toArray(function(err, results) {
       console.log(results[0]);
   });
});

我可以使用此代码末尾的find()方法获取结果数组。

但是,我想知道是否可以通过回调在更新功能代码中获得相同的结果数组?

我尝试在更新代码中输入" console.log(r.name)但显示未定义

2 个答案:

答案 0 :(得分:1)

您需要在find的回调中执行update操作。你这样做,你的查找操作会在更新之前触发。

var contact = db.collection('contact');

contact.update({name: "Fred"}, {$set: {tel:'09088oooxxaa'}}, function(err,r) {
   if(err) {
       console.log("Update err");
   }
   else {
       console.log('Update success');
       contact.find({name: "Fred"}).toArray(function(err, results) {
           console.log(results[0]);
       });
   }
});

答案 1 :(得分:1)

您还可以执行findAndModify,这样您就不需要在更新后进行查找,因为它也会返回更新的项目:

var mongodb = require('mongodb');
var MongodbClient = mongodb.MongoClient;

MongodbClient.connect('mongodb://localhost/test', function(err, db) {
    if(!err){
        console.log("We are connected!!");
    }

    var contact = db.collection('contact');

    contact.findAndModify({name: "Fred"}, {$set: {tel:'09088oooxxaa'}}, function(err,r) {
       // r now contains the entire item updated
       if(err){
           console.log("Update err");
       }
       else{
           console.log('Update success');
           console.log(r.name);
       }
   });
});