sqlite3 数据库:类型错误:无法读取未定义的属性



我有一个曾经工作的 Node.js 脚本,但在我切换到另一个 VM 后它不再工作了。谁能看到问题出在哪里?这是函数,db 是一个数据库:

this.start = function() {
logger.debug('Starting up.');
db.serialize(() => {
db.run("DELETE FROM jobs WHERE status = 'failed'")
.run("UPDATE jobs SET status = 'queued'", (err) => {
if (err) {
logger.error(err.message);
} else {
logger.info('done');
}
});
});
}

现在我收到以下错误:

TypeError: Cannot read property 'run' of undefined
at Database.db.serialize ()
at TransactionDatabase.serialize
at module.exports.start
at Object.<anonymous>
...

错误指向第二个".run"。

我的节点.js版本是 10.4.1,sqlite3 版本 3.8.2。

我错过了什么?某个模块?

我想我找到了答案。链接run()几乎同时运行查询。根据此答案,该函数run()启动查询,但立即返回。

但是,如果序列化链接,则不能同时使用这两种方法。您正在尝试按顺序运行查询,但也同时尝试运行查询。

不过,根据您的需要,您可以嵌套序列化、并行化或回调,如"控制流"文档中所示。

我想该方法通过将run()的返回值更改为undefinedserialize()"锁定"链接。

最新更新