我使用nodejs/express/mongoose/angularjs。我想更新一个名为 Lists 的集合,它具有多个属性,其中之一是项目数组。在下面的代码中,我在 items 数组中推送一个新的任务项。一切正常,但是更新函数不会发回更新后的集合,然后我必须对数据库执行另一个查询。有没有更有效的方法来做到这一点?
Nodejs/express 代码:
exports.addTaskToList = function(req, res) {
var listId = req.params.Id;
var taskId = req.params.TaskId;
Lists.update({_id: listId}, {$push: {items: taskId}}, {safe:true, upsert: true}, function(err, result){
if(err) {
console.log('Error updating todo list. ' + err);
}
else{
console.log(result + ' todo list entry updated - New task added');
Lists.findById(listId).populate('items').exec(function (err, updatedEntry) {
if (err) {
console.log('Unable to retrieve todo list entry.');
}
res.send(JSON.stringify(updatedEntry));
});
}
});
};
此外,数组项是一个ObjectId 数组。这些项目位于单独的架构中,因此位于单独的集合中。是否可以推送整个对象而不仅仅是它的_id,这样就不会创建另一个集合?
use findOneAndUpdate()方法并在查询参数中使用选项作为{“新”:真}
return this.sessionModel
.findOneAndUpdate({user_id: data.user_id}, {$set:{session_id: suuid}}, { "new": true})
.exec()
.then(data=>{
return {
sid: data.session_id
}
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)