Mongoose model.find (FilterQuery) возвращает пустой массив - PullRequest
0 голосов
/ 24 мая 2019

У меня есть серверная часть Node.js, которая связывается с моим MongoDB, и мне нужно отфильтровать некоторые результаты из базы данных. Проблема в том, что когда я отправляю запрос, я просто получаю пустой массив в ответ.

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 что-то не так, но я не знаю, что именно.

Любая помощь будет оценена

1 Ответ

2 голосов
/ 24 мая 2019

если 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;
            })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...