我有3个模型User,Scene,Player。
可能有类似的东西:
Player.find({"scene.user" : "someID", name : {'like' : '%' + key + '%'}}).populate("scene").exec(function(err, data)
{
....
});
规则协会是: 用户尽可能多的场景 场景有一个用户 场景有很多玩家 玩家有一个场景
我知道我可以在请求之后使用过滤器(如下所示),但想知道风帆是否可以作为一个请求。
解决方法:
Scene.find({user : userID}).populate("players", {Name : {'like' : '%' + key + '%'}}).then(function (elements)
{
var listPlayerOfCurrentUser = [];
for (var i = 0; i < elements.length; i++)
{
var scenario = elements[i];
listPlayerOfCurrentUser = listPlayerOfCurrentUser.concat(scenario.players);
}
if (listPlayerOfCurrentUser.length > 0)
{
res.json(listPlayerOfCurrentUser);
}
else
{
res.status(404).json({error : 'no player found'});
}
}).catch(function (error)
{
console.error(error);
res.status(500).json({error : 'DB error'});
});