如何在节点上的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()方法来获得结果数组。

不过,我想知道是否有任何方式可以通过callback获得更新函数代码中相同的结果数组?

我试图在更新代码中使用“console.log(r.name)”,但是显示为undefined

你也可以做一个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); } }); }); 

您需要在callback内部执行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]); }); } });