Запрос mongoDB возвращаемого значения void в nodeJS приложении? - PullRequest
0 голосов
/ 24 апреля 2020

Я написал эту функцию, чтобы получить документ из конца коллекции в MongoDB. Когда я пытаюсь вызвать эту функцию в index. js, она возвращает неопределенное значение.

index. js:

app.get('/', authenticate, function(req, res){

  // console.log("DATA: " + getWorldStatsData());
    everything = {
      worldstats: getWorldStatsData(),

    }

    res.render('index', {
      data: everything

  })
})

и моя функция:

function getWorldStatsData(){


    db.collection('worldstats').find({}).sort({"statistic_taken_at":-1}).limit(1).toArray((err, stats)=>{

      return stats
    })

  // return stats
}

1 Ответ

0 голосов
/ 24 апреля 2020

Как предположил Джонршарп, это происходит потому, что код, извлекающий данные, является асинхронным. Это означает, что вам нужно реализовать какой-то обратный вызов, чтобы уведомить окружающую функцию о завершении операции. Простой пример:

index

app.get('/', authenticate, async function(req, res){

  // console.log("DATA: " + getWorldStatsData());
    everything = {
      worldstats: await getWorldStatsData(),

    }

    res.render('index', {
      data: everything

  })
})

ваша функция:

function getWorldStatsData(){
      return db.collection('worldstats').find({}).sort({"statistic_taken_at":-1}).limit(1).toArray((err, stats)=>{

          return stats
        })

      // return stats
    }

Пожалуйста, посмотрите на ссылку, предоставленную jonrsharpe для лучшего понимания

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...