数组推送仅在回调内部有效

时间:2019-03-08 17:28:01

标签: arrays node.js count array-push

我正在尝试使用一些猫鼬值更新数组。但是,只有在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);

使用异步/等待:

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 :(得分:0)

我的理解是您没有兑现诺言。

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);