首页 > 解决方案 > 将 Mongoose 查询导出为嵌套数组的数组

问题描述

早上好,

我认为按照Push element into nested array mongoose nodejs的说明,我会设法解决我的问题,但我仍然卡住了。

我正在尝试将 Mongoose 查询的结果放入数组中。下面的代码在对象数量相对较少时有效,但每当体积增加时我都会收到“解析错误”。

我可以看到我没有考虑代码是异步的这一事实,但我尝试过的尝试Promise { <pending> }充其量只是最终结果。

const Collection = require("./schema");
const connection = require("mongoose");

let data = [];

Collection.find({},(e,result)=>{

        result.forEach(doc =>{ 
        
        data.push([doc["a"],
                   doc["b"]])
    });
})
.then(()=>connection.close())
module.exports = data;

以上显然是错误的,因为我不尊重操作的异步性质。

我实现了以下功能,但我不明白我应该如何解决这个承诺。

async function getdata() {
  const cursor = Collection.find().cursor();
  let data = []
  await cursor.eachAsync(async function(doc) {
    await new Promise(resolve =>resolve((data.push(doc))));
  });
    
}

目的是当我let data = require("./queryResult.js") data包含所有必要的数据时[[a,b],[a,b]]

有人可以帮我解决这个问题吗?

提前谢谢了。

标签: node.jsmongooseasync-await

解决方案


推荐阅读