我有一个曾经可以工作的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”。
我的Node.js版本是10.4.1,sqlite3版本是3.8.2。
我想念什么?一些模块?
答案 0 :(得分:0)
我想我找到了答案。链接run()
几乎同时运行查询。根据{{3}},函数run()
启动查询,但立即返回。
但是,如果序列化和链,则不能同时使用这两种方法。您正在尝试按顺序运行查询,但也要同时运行。
不过,根据您的需要,您可以嵌套序列化,并行化或回调,如this answer所示。
我猜想方法serialize()
通过将run()
的返回值更改为undefined
来“锁定”链接。