Node.js 如何在collection.find()之后获取JSON对象

Node.js 如何在collection.find()之后获取JSON对象,node.js,mongodb,Node.js,Mongodb,我使用nodeJS从mongoatlas获取带有URL的数据 但是,在函数collection.find()之后,我不知道如何将获取的数据转换为JSON对象,该对象稍后将成为stringify() 变量record未定义,我不知道如何正确分配它 代码如下: app.get("/allbooks", (request, response) => { console.log("someone request to get all books from da

我使用nodeJS从
mongoatlas
获取带有URL的数据

但是,在函数
collection.find()
之后,我不知道如何将获取的数据转换为JSON对象,该对象稍后将成为
stringify()

变量
record
未定义,我不知道如何正确分配它

代码如下:

app.get("/allbooks", (request, response) => {
    console.log("someone request to get all books from database")
    var records = collection.find()
    if(records!=null){
        console.log('not empty')
    }
    var result
    records.forEach(function(record) {
        if(record!=null) {
            console.log(record)
            result = result + JSON.stringify(record)
        }
    }, function(err) {
        if(err) {
            response.status(500).send(err)
        }
    console.log(result)
    response.send(result)
    })
})

正如我所看到的,收集方法“find”返回承诺,请尝试等待

const records = await collection.find();  
console.log(records);
另外,检查此方法的接口,它可以将回调fn作为参数。

使用
lean

const records = await collection.find().lean()

这将生成一个json对象,然后可以很容易地将其字符串化。

您可以这样更改和简化代码:

app.get("/allbooks", async (request, response) => {
  try {
    let records = await collection.find({});
    res.status(200).send(JSON.stringify(records));
  } catch (error) {
    res.status(400).json({ error: error });
  }
})