我试图使用$ in运算符创建一个mongoose查询,该运算符特别需要一个数组作为输入。
我传入了一个search.interests数组,但是根据用户输入,interest数组可以是1个值或多个。如果它很多,它工作正常,如果它是一个值,那么$ in运算符失败。
" $ in需要一个数组"
由于我不知道我的用户会选择多少兴趣,我如何确保search.interests是一个数组,即使有一个值,所以我可以继续使用$ in运算符用于两个用例。
search(req, res) {
let search = req.query;
console.log(search.interests);
User.where('profile.interests').in(search.interests)
.select('_id')
.exec((err, users) => {
if (err) {
return res.json(err);
}
return res.json(users);
});
}
答案 0 :(得分:1)
强制使用数组类型:http://rextester.com/JFXO55055
interests_array = [].concat(search.interests || [])
你的代码中的:
User.where('profile.interests').in([].concat(search.interests || []))
.select('_id')
.exec((err, users) => {
if (err) {
return res.json(err);
}
return res.json(users);
});