NodeJS Sqlite db.each не работает - PullRequest
       5

NodeJS Sqlite db.each не работает

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

Код это

const sqlite3 = require('sqlite3').verbose();

let db = new sqlite3.Database('./database.db');

db.serialize(() => {
    db.run("CREATE TABLE IF NOT EXISTS users (username text, password text, level text);");
    db.run("CREATE VIRTUAL TABLE IF NOT EXISTS projects USING FTS4(projeYili,projeAdi,ogretmenler,ogrenciler,ozet,basvurular,sonuclar,oduller);");
});


function read_projects_json(){
    let table_data_json = [];
    let sql = "SELECT rowid,* FROM projects";
    db.each(sql, (err,row) => {
        table_data_json.push({
            'id':row.rowid,
            'proje_yili':row.proje_yili,
            'proje_ogretmeni':row.proje_ogretmeni,
            'proje_ogrenciler':row.proje_ogrenciler,
            'proje_ozeti':row.proje_ozeti,
            'proje_basvurulari':row.proje_basvurulari,
            'proje_sonuclari':row.proje_sonuclari,
            'proje_alinan_oduller':row.proje_alinan_oduller
        });
    });
    return table_data_json;
}


console.log(read_projects_json());

db.close();

Когда я запускаю это, он дает [] пустой массив

в функции read_projects_ json, он запускается

let table_data_json = [];
let sql = "SELECT rowid,* FROM projects";

table_data_ json теперь является пустым массивом, но после этого я думаю, что он не ждет db.each до конца sh и возвращает table_data_ json как пустой массив, как я могу это исправить?

1 Ответ

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

Я просто использовал обещания и db.all вместо db.each, поэтому я обернул db.all в Promise

function read_projects_json(){
    return new Promise((resolve, reject) => {
    let table_data_json = [];
    let sql = "SELECT rowid,* FROM projects";
    db.all(sql, [], (err, rows) => {
        if (err) {
          reject(err);
        }
        rows.forEach((row) => {
            table_data_json.push({
                'id':row.rowid,
                'proje_yili':row.proje_yili,
                'proje_ogretmeni':row.proje_ogretmeni,
                'proje_ogrenciler':row.proje_ogrenciler,
                'proje_ozeti':row.proje_ozeti,
                'proje_basvurulari':row.proje_basvurulari,
                'proje_sonuclari':row.proje_sonuclari,
                'proje_alinan_oduller':row.proje_alinan_oduller
            });
        });
        resolve(table_data_json);
      });
    });
}

, после чего я использовал затем для печати данных

read_projects_json().then((data) => console.log(data));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...