很抱歉标题非常糟糕,无法弄清楚如何更好地描述问题。
我在架构中有这个: 'language': [String]
然后在路由器中我发送一个 GET 请求:
let page = Math.max(0, req.query.page - 1);
let take = req.query.take || 50;
let languages = req.query.languages;
let filter = {language: {$in: [languages]}};
let query = Labels.find(filter).limit(100).sort('-_id');
query.count(function (err, count) {
if (err) {console.log(err);}
query.skip(page * take).limit(take).exec('find', function (err, docs) {
if (err) {
return res.status(400).send({
message: err
});
} else {
res.json({
count : count,
docs : docs,
language: languages
});
}
});
});
这是 GET 网址: http://localhost:3003/api/v1/test/query?take=50&page=1&languages="be","bg"
问题是我总是得到 0 计数,但如果我直接在过滤器 var ex 中输入。let filter = {language: {$in: ["be","bg"]}};
然后结果返回所有正确的文件。
当我控制台记录languages
var 时,我得到:"be","bg"
所以参数很好。
这里发生了什么?
req.query.languages
不是数组。您应该更改客户端以在查询中发送正确的数组:http://localhost:3003/api/v1/test/query?take=50&page=1&languages=be&languages=bg
或更新解析languages
参数的操作。
let languages = req.query.languages; // when languages is an array
// OR
let languages = req.query.languages.split(','); // when languages is a string
let filter = {language: { $in: languages }};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句