我试图根据传递的参数有条件地获取数据。
参数是“房间”和“区域”
如果房间不等于“ any”,我想在过滤器中添加条件 房间。
如果面积不等于“全部”,我想在过滤器中添加条件 面积。
exports.get_property_search = function (req, res) {
var filter = [];
if (req.params.area != "all")
filter.push({ "area": req.params.area });
if (req.params.room != "any")
filter.push({ "roomQty": req.params.room });
AddProperty.find({
$expr:
{
$cond:
{
if: filter != [],
then: {
$and: filter
},
else: {
}
}
}
}, function (err, addProperty) {
if (err)
res.send({ code: '500', message: err });
res.send({ code: '200', data: addProperty });
});
};
但是,此条件不起作用,并且所有返回的所有数据都没有任何过滤器。
答案 0 :(得分:1)
您在这里使用错误的语法。可以使用简单的javascript代码而不是使用聚合运算符来完成此操作。
let filter = {}
if (req.params.area !== "all") {
filter.area = req.params.area
}
if (req.params.room !== "any") {
filter.roomQty = req.params.room
}
AddProperty.find(filter).then((data) => {
console.log(data)
})