这是我的代码,我有依赖的回调:
db.collection(config.user).find({
"_id": id,
}, function(err, result) {
if (!err) {
db.collection(config.user).update({
'_id': uname,
"pass": pwd
}, {
$set: {
'pass': pwd
}
}, function(err1, result1) {
db.close();
if (!err1) {
res.json({
"success": 1)
} else {
logger.error(err);
}
});
} else {
logger.error(err);
}
});
如何使用promises编写此代码?
答案 0 :(得分:1)
您可以这样做:
function findUser(user, id) {
db
.collection(user)
.find({ "_id": id }, function (err, result) {
if (err) {
return Promise.reject(err);
}
return Promise.resolve(result);
});
}
function updateUser(user, uname, pwd) {
db
.collection(user)
.update({
'_id': uname,
"pass": pwd
}, {
$set: {
'pass': pwd
}
}, function (err, result) {
db.close();
if (err) {
return Promise.reject(err);
}
return Promise.resolve(result);
});
}
Promise
.all([findUser(config.user, id), updateUser(config.user, uname, pwd)])
.then(function (results) {
res.json({ "success": 1 });
})
.catch(function (errors) {
logger.error(errors);
});
答案 1 :(得分:0)
也许这可以帮助你findOneAndUpdate Docs
const MongoClient = require('mongodb').MongoClient
MongoClient.connect('mongodb://localhost:27017/test', (err, db) => {
// Get the collection
const col = db.collection(config.user)
col.findOneAndUpdate(
{'_id': id }, // filter
{ $set: { 'pass': pwd } }, // update obj
{ returnOriginal: false } // options
).then(result => {
console.log(result) // the updated doc
})
})