在获取用户uid给定数组的所有文档时获取空数组

时间:2018-11-04 04:43:33

标签: node.js mongodb mongoose

我想获取followers数组的所有用户文档,该数组由uid(string)组成。

{
    "followers": [
        "GHfd4UbusVUV5Ofo3xU4gH3XDFv2", "W380Qbxq2vUTKuzQdOvdsrFyrjb2"
    ],
    "followings": [
        "GHfd4UbusVUV5Ofo3xU4gH3XDFv2"
    ]

我直接将跟随者数组作为idArray发送 我正在使用以下代码:

router.get('/a/:idArray', (req, res) => {
User.find({ uid: { $in : req.params.idArray}})
    .then(users => {
        res.json(users);
        console.log('array',users);
    })
    .catch(err => {
        console.log(err);
    });
});

但是我得到的是空数组。我在哪里做错了?

2 个答案:

答案 0 :(得分:0)

您不能将类似["W380Qbxq2vUTKuzQdOvdsrFyrjb2", "GHfd4UbusVUV5Ofo3xU4gH3XDFv2"]的数组传递到GET请求中。

将客户端的数组转换为逗号分隔的值并作为查询字符串传递

/a?idArray=W380Qbxq2vUTKuzQdOvdsrFyrjb2&idArray=GHfd4UbusVUV5Ofo3xU4gH3XDFv2

答案 1 :(得分:0)

对于传递复杂的对象,必须对所有内容进行url编码可能会很麻烦,因此,尽管@front_end_dev的答案是正确的,但是如果您的API变得更加复杂,则可能需要转移到POST请求的正文中传递数据:

router.post('/a', (req, res) => {
    User.find({ uid: { $in : req.body.uids }})
        .then(users => {
            res.json(users);
            console.log('array',users);
        })
        .catch(err => {
            console.log(err);
        });
});

身体看起来像:

{
    uids: [
        "GHfd4UbusVUV5Ofo3xU4gH3XDFv2", 
        "W380Qbxq2vUTKuzQdOvdsrFyrjb2"
    ]
}