App正在使用Node和Express,我有一个具有这种结构的MongoDB文档,来自db.users.find().pretty()
:
{
"_id" : ObjectId("hash1"),
"username" : "user1",
"notes" : [
{
"_id" : ObjectId("hash2"),
"data" : "This is note 1"
}
],
}
{
"_id" : ObjectId("hash3"),
"username" : "user2",
"notes" : [
{
"_id" : ObjectId("hash4"),
"data" : "This is note 2"
}
],
}
我需要删除notes
子文档。
使用findByIdAndUpdate
和pull
,路线为:
app.delete('/users/:id/notes/:id', callback );
和查询:
var fieldsToSet = {
$pull: {notes: {_id: req.params.id}}
};
var options = { new: true };
req.app.db.models.User
.findByIdAndUpdate(req.user._id, fieldsToSet, options, callback)
如果我以user1
身份登录并希望删除带有hash2
ObjectId的注释(请将此视为MongoDB生成的真实哈希),我没有问题,但如果我仍然以user1
我希望删除包含hash4
的注释,但是我会收到user._id
hash1
。我不能两次使用req.params.id
,它总会在最后:id
返回给我。
如何动态获取两个id?
由于
答案 0 :(得分:0)
你需要有两个不同的参数,这是有道理的,因为它们是两件事:
app.delete('/users/:userId/notes/:noteId', callback );
然后,您可以使用req.params.nodeId
或req.params.userId