對不起,真的很糟糕的標題,無法弄清楚如何更好地描述問題。
我有這樣的模式: '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前輸入。 let filter = {language: {$in: ["be","bg"]}};
然後結果返回所有正確的文件。
當我控制檯登錄languages
變種,我得到:"be","bg"
所以params很好。
這是怎麼回事?
'&語言= 「是」 與語言= 「BG」' 「應該」 解析作爲一個數組而不需要後處理。那麼它應該是'{language:{$ in:req.query.languages}}',因爲'req.query.languages'應該已經是一個數組了,而不是你現在傳入的字符串。 –