如何创建一个mongoose对象并同时记录_id



我正在guests下的事件模型中创建子文档,如下所示。我想在创建每个访客Id时console.log相应的子域Id。

{
"guests" : [ 
{ "phone" : 11111, 
"_id" : ObjectId("61ef629981f154bead6b0de4") 
}, 
{ "phone" : 4444444444, 
"_id" : ObjectId("61fca19f95b626e017732139") 
} 
]
}

我遵循了mongoose文档,但文档(下面(中的代码只记录第一个id,即使由于索引0,每个后续文档都被创建了。

// create a comment
parent.children.push({ name: 'Liesl' });
const subdoc = parent.children[0];
console.log(subdoc) // { _id: '501d86090d371bab2c0341c5', name: 'Liesl' }
subdoc.isNew; // true

我尝试删除索引0,控制台日志只生成不断增长的来宾数组。

module.exports.addGuest = async (req, res) => {
const event = await Event.findById(req.params.id);
const phone = req.body.guest;
event.guests.push(phone);
const guestId = event.guests[0];
console.log(guestId);
await event.save();
res.redirect(`/events/${event._id}`);
}

如何调整我的函数以在创建时记录相应的子域Id?

尝试在subschema上应用猫鼬挂钩。每次在集合中保存文档时,都会触发mongose预保存hook,您可以记录正在保存的文档的id。

最新更新