1

Express.js では、2 番目のクエリが最初のクエリに依存する 2 つのクエリのシリアル化を使用して、次のことを実行しようとしています。

  1. 最初のクエリを使用して entryID を取得しようとしています
  2. その entryID を 2 番目のクエリに使用します

私が理解している限り、最初のクエリが完了する前に 2 番目のクエリが呼び出されます。また、「console.log("My entry: "+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 に答える