我有我自己的类和方法调用findByIdDate()当我找到数据时,然后在db.collection()内部将得到结果,但是如果我想从自己的方法返回该数据,它将返回未定义的状态。
有人可以给我示例如何获取数据吗?我一直在搜索,但找不到该问题的任何答案。我是node和express的新手
我的方法

findByIdDate(){
    let data = this.db.collection('journal').find({date: this.Date}).toArray((err, result) => {
        if(err){return console.log(err)}
        console.log(result) // I have data
        return result
    })
    return data
}


在我的其他文件中,我像这样使用它

app.post('/id', (req, res) => {

  const DIARY = new diary('new', '16 January 2020', db)
  let result = DIARY.findByIdDate()
  console.log(result) // undefined

});

最佳答案

最好不要使用回调函数,并将函数async/await设置为:

async findByIdDate(){
    try {
        let data = await this.db.collection('journal')
            .find({date: this.Date})
            .toArray() // returns a promise which can be 'awaited'
        console.log(data)
        return data
    } catch (err) {
        console.error(err)
        throw err
    }
}


并在您的路线中将其用作

app.post('/id', async (req, res) => {
    try {
        const DIARY = new diary('new', '16 January 2020', db)
        let result = await DIARY.findByIdDate()
        console.log(result)
    } catch(err) {
        console.error(err)
    }
})

关于node.js - 带有nodejs的mongoDB返回数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59789428/

10-12 00:07
查看更多