1

在 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
4

1 回答 1

1

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

要解决此问题,请将db.run调用移动到回调中。

于 2013-04-28T05:46:59.297 回答