如何在节点上的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]); }); } });