我目前正在使用Express,我想创建一个这样的路线:
router.get('/actionsFiltered/:company/:user/:location',function(req,res,next){
var query=Action.find({
company:req.company._id,
inCharge:req.user._id,
'event.location':req.location._id,
})
.populate({
path:'event',
populate:[{path:'eventLocation'},{path:'anomaly'}],
})...
My Action通过引用Mongo ObjectID的属性“event”来了解事件。我的Event对象有一个属性'location',也指Mongo ObjectID。我希望仅当参数位置与事件拥有的位置ID匹配时才能获取操作,该操作本身由操作拥有。
这是一个动作:
{
"_id" : ObjectId("591ecadd97d6f32bf0c6f3e7"),
"company" : ObjectId("58eceb1d2a59fa1c5c4dfc9d"),
"event" : ObjectId("591174b9ce02550140214bd3"),
}
这是一个事件:
{
"_id" : ObjectId("591174b9ce02550140214bd3"),
"location" : ObjectId("586e9559b38f2a101caa77fc"),
}
最后是一个位置:
{
"_id" : ObjectId("586e9559b38f2a101caa77fc"),
"name" : "Wsh",
}
'event.location':req.location._id 不起作用,但我不知道如何处理请求。我可以直接在Action对象中添加位置字段,但如果可能的话我不想这样做。