Массив push работает только внутри обратного вызова - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь обновить массив некоторыми значениями mongoose.Но это работает, только если array.push находится внутри функции обратного вызова.Я пытался кодировать несколькими способами, но вне обратного вызова я всегда получаю пустой массив.Вот некоторый код:

let y = [];

Shops.countDocuments({ dt_encerramento: { $gte: jan, $lte: abr }})
   .then(function(os) {
     y.push(os);
   })
   .catch(err => { throw err; });

 console.log(y);

Использование async / await:

let y = [];

async function docs() {
   const numDocs = await Shops.countDocuments({ dt_encerramento: { $gte: jan, $lte: abr }}).exec();
   return numDocs;
}

docs().then(function (err,n) { y.push(n); });

console.log(y);

Помогите, пожалуйста.Я не знаю, что делать ...

1 Ответ

0 голосов
/ 08 марта 2019

Насколько я понимаю, вы упускаете обещание.

let y = [];

const docs = async () => {
   return await Promise.all(Shops.countDocuments({ dt_encerramento: { $gte: jan, $lte: abr }}).exec());
}

const docsToPush = docs()
y.push(docsToPush)
console.log(y);
...