我想获取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);
});
});
但是我得到的是空数组。我在哪里做错了?
答案 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"
]
}