mongoDB с nodejs возвращаемыми данными - PullRequest
1 голос
/ 17 января 2020

У меня есть свой собственный вызов класса и метода findByIdDate (). Когда я найду данные, то внутри db.collection () я получу результат, но если я захочу вернуть эти данные из моего собственного метода, он вернется неопределенным. Может ли кто-нибудь дать мне пример, как получить данные, пожалуйста? Я искал, но я не могу найти ответы на эту проблему. Я новичок в ноде и 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 

});

1 Ответ

2 голосов
/ 17 января 2020

Было бы лучше покончить с функциями обратного вызова и сделать функцию 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)
    }    
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...