node-sqlite3序列化失败:SQLITE_CONSTRAINT:外键约束失败

在Express.js中,我正在尝试使用两个查询的序列化,其中第二个依赖于第一个:

  1. 我正在尝试使用第一个查询来获取entryID
  2. 我为第二个查询使用该entryID

据我所知,第二个查询是在第一个查询完成之前调用的。 还有“console.log(”我的入口:“+ data.entryID);” 返回正确的entryID。 下面我显示了我正在使用的代码以及我得到的错误。 任何帮助,将不胜感激。

db.serialize(function(){ db.get("Select entryID from entry where pID=$pID",{$pID:participName},function(err, data){ if(err) throw err; foundID=data.entryID; console.log("My entry: "+data.entryID); }); db.run("insert into observation(entryID, objID, data) values($entryID,1,$intro_counter)", {$entryID:foundID, $intro_counter:intro_counter}); }); events.js:71 throw arguments[1]; // Unhandled 'error' event ^ Error: SQLITE_CONSTRAINT: foreign key constraint failed 

你的问题是, db.get本身可能被序列化,但是你给db.get的callback仍然是asynchronous调用的。

要解决这个问题,请将db.run调用移入callback。