Сохранение node.js postgres результата запроса внутри переменной - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь сохранить некоторые user_ids из моей базы данных в массиве, чтобы я мог проверить этот массив в маршруте. Функция обратного вызова записывает правильные данные, но значение const остается неопределенным. У кого-нибудь есть идеи, как решить эту проблему?

Я использую библиотеку node- postgres для подключения к базе данных.

Это мой код:

функция запроса к базе данных:

const getAll = (callback) => {
  const query = `SELECT user_id FROM users`;

  pool
    .query(query)
    .then(data => {
      callback(null,data.rows)
    })
    .catch(e => console.error(e.stack))
}

const с функцией обратного вызова:

const users = db.getAll(function(err,data) {
  if (err) {
    console.log(err);            
  } else {            
    const ids = data.map(x => x.user_id)
    console.log(ids);  // logs an array of ids 
    return ids         
  }    
})

console.log(users) // returns undefined

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 29 февраля 2020

То, что происходит в журнале консоли, выполняется до завершения обратного вызова. Чтобы заставить это работать так, как вы ожидаете, вы хотите изменить рефакторинг для использования async / await или обещаний.

...