#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);
… выполняется до возврата базы данных. Ваш код будет:
- отправьте вызов db
- журнал
boards
- (когда возвращается вызов db): добавить строки в
boards
Вам необходимо войти boards
в свой обратный вызов
Комментарии:
1. смотрите nodejs.dev/learn/ …