拥有以下update
查询:
var template = {name:'my_name', ...};
ApplicationModel.update({
_id: idApplication,
'templates.name': { '$ne': template.name }
},
{
$push: { templates: template }
}, function(err, raw) {
if (err) {
return callback(err);
}
...
callback();
});
在ApplicationModel
内部有一个名为templates
的数组,我推送template
个对象, Mongoose 自动为_id
分配这些对象。
有没有办法在查询的回调函数中获取此_id
?
答案 0 :(得分:1)
在这种情况下,我们通常只是手动创建ObjectId,所以我们在保存之前就已经创建了它:
var template = {name:'my_name', ...};
var myNewId = new mongoose.Types.ObjectId();
template._id = myNewId;
ApplicationModel.update({
_id: idApplication,
'templates.name': { '$ne': template.name }
},
{
$push: { templates: template }
}, function(err, raw) {
if (err) {
return callback(err);
}
// myNewId is available here...
callback();
});
};
无论如何,ObjectId总是由客户端中的mongoDriver创建,因此在代码中明确地执行它或让MongoDriver处理它之间几乎没有什么区别。