2015-09-27 44 views
1

下面是我的代码如何在节点上的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),但表现出不确定

回答

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); 
     } 
    }); 
}); 
+0

Thanks.So在使用update not findAndModify时,我不能在更新回调中使用“r”? – Dreams

+0

是的,你不能用'update'命令来使用它,因为它只返回更新的行数而不是项目。 –

+0

谢谢。我虽然它也会返回更新的项目。你知道我在哪里可以找到这些信息,它将返回哪些数据? – Dreams

1

你需要做的回调里面find oepration到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]); 
     }); 
    } 
}); 
+0

Thanks.So我不能在更新回调中使用“r”? – Dreams

+0

是的,它在回调的范围 –

相关问题