我有一个与MongoDB通信的Node.js后端,我需要从数据库中过滤掉一些结果。问题是,当我发送查询时,我只会收到一个空数组作为回报。
function setTOQuery() {
let path;
let filter;
let query = {};
return new Promise((resolve)=> {
if(params.A.length === 0 ) {
path = "booked.services";
filter = { '$exists': true };
query[path] = filter;
} else {
path = "booked.services.service_id";
filter = { '$in': params.A };
query[path] = filter;
}
resolve(query);
});
}
async function retrieveData() {
const toQ = await setTOQuery();
CustomerModel.find({
toQ
}, (err, docs) => {
if(err) console.log(err);
console.log(toQ);
console.log(docs);
res.status(200).send(docs);
return docs;
})
}
retrieveData();
console.log(toQ)
返回{ 'booked.services': { '$exists': true } }
所以我不明白这里出了什么问题。通过这两个查询,我都只会收到[]
。我怀疑使用async / await出错了,但是我不知道到底是什么。
任何帮助将不胜感激
答案 0 :(得分:2)
如果console.log(toQ)
返回{ 'booked.services': { '$exists': true } }
然后toQ
已经是一个对象,您应该在没有键的情况下使用它,例如:
CustomerModel.find(
toQ
, (err, docs) => {
if(err) console.log(err);
console.log(toQ);
console.log(docs);
res.status(200).send(docs);
return docs;
})