Node Express - 数据库创建得太晚导致错误

Node Express - Database is created too late causing error

我的问题是创建数据库。它创建得太晚,会导致进一步查询出现问题。我尝试使用 async 和 await,但似乎并没有解决问题。

async function storeDailyDealToDB(dailyDeal) {
    const db = new sqlite3.Database('database.db');

    await new Promise((resolve) => {
        const QUERY_CREATE_TABLE =
            "CREATE TABLE IF NOT EXISTS daily_deal ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT,)";
        db.run(QUERY_CREATE_TABLE);
        resolve("done")
    });

    await new Promise((resolve) => {
        const insert =
            "INSERT INTO daily_deal (title) VALUES (?)";
        const stmt = db.prepare(insert);
        stmt.run([dailyDeal['title']]);
        stmt.finalize();
        resolve("done")
    });

    let lastRow = await new Promise((resolve) => {
        db.each("SELECT * FROM daily_deal ORDER BY id DESC LIMIT 1", function (err, row) {
            resolve(err == null ? {} : row)
        });
    });

    db.close();

    return lastRow
}

这是我得到的错误:

[Error: SQLITE_ERROR: no such table: daily_deal
Emitted 'error' event on Statement instance at:
] {
  errno: 1,
  code: 'SQLITE_ERROR'
}

Node.js v17.9.0

我做了很多研究,但还是卡住了。我读到使用 Promise 但它部分起作用。我不确定如何解决这个问题。

查看 Database#run 的参考文档后,您应该将回调传递给 运行 方法。在此回调中,您希望根据结果解决或拒绝承诺。

await Promise((res, rej) => {
    db.run(..., (err, result) => {
        if (err) rej(err) else res(result)
    });
});

我认为这是正确的(但是未经测试)。