以下是我的代码
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)但显示未定义
答案 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);
}
});
});