我正在尝试通过多个参数过滤模型。
首先,我找到那些名字包含查询参数的对象:
if (firstName){
User.find({firstName: new RegExp(firstName, "i")}, function (err, users) {
filteredUsers = users;
});
}
然后,我想继续过滤filteredUsers
,如:
if (lastName){
filteredUsers.find({firstName: new RegExp(lastName, "i")}, function (err, users) {
filteredUsers = users;
})
}
等等。
但是,我自然会收到此错误:
#<Object> is not a function
如何完成过滤过滤结果?
答案 0 :(得分:2)
aggregation正是您要找的。 你的代码看起来像(我没有尝试过mongoose):
Users.aggregate(
[
{ $match: firstname ? { firstname: new RegExp(firstname, "i") } : {} },
{ $match: lastname ? { lastname: new RegExp(lastname, "i") } : {} }
]
);