如何在包含多个或单个值的数组中使用$ in运算符

时间:2017-11-28 12:26:22

标签: node.js mongoose

我试图使用$ 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);

        });

}

1 个答案:

答案 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);

    });