Не удается добавить строки sql в массив javascript в узле js

#arrays #sqlite #nodes #element

#массивы #sqlite #узлы #элемент

Вопрос:

Итак, я хочу запросить некоторые данные из базы данных sql (в частности, sqlite) и поместить результаты в массив. Однако, похоже, это не работает, и я получаю только пустой массив. вот как я пытался это сделать:

 var boards = []; // init the boards array
const sqlite = require('sqlite3').verbose(); // init sqlite
var db = new sqlite.Database("database.db"); // init the database

// the query
db.all(`select * from boards;`,(err, result) => {
    // error handling
    if (err) throw err;
    // loop threw all the results and add them to the boards array
    result.forEach((row) => {
        boards.push(row);
    });
});
console.log(boards);
// outputs [], even if there's something in the boards table
  

Я пытался делать такие вещи, как замена

         boards.push(row);
  

с

         boards[boards.length] = row;
  

и замена всей функции forEach на

     boards = result;
  

Но ничего из этого не сработало.

Ответ №1:

 console.log(boards);
  

… выполняется до возврата базы данных. Ваш код будет:

  1. отправьте вызов db
  2. журнал boards
  3. (когда возвращается вызов db): добавить строки в boards

Вам необходимо войти boards в свой обратный вызов

Комментарии:

1. смотрите nodejs.dev/learn/ …