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

时间:2013-04-28 00:10:05

标签: sql database node.js sqlite

在Express.js中,我尝试使用两个查询的序列化来执行以下操作,其中第二个查询依赖于第一个查询:

  1. 我正在尝试使用第一个查询获取entryID
  2. 我将第二个查询的entryID用作
  3. 据我所知,第二个查询在第一个查询完成之前被调用。还有“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
    

1 个答案:

答案 0 :(得分:1)

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

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