0
我試圖插入一些依賴於以前查詢的數據的數據,我序列化了查詢和插入,但是我無法獲得正確的結果。如何在nodejs中正確序列化db.prepare sqlite3
我構建了這個簡單的例子來顯示我的錯誤。它只是查詢表中的行數,並將其插回到表中。
db.serialize(function() {
var count=0;
db.each("SELECT count(rowid) FROM info", function(err, row) {
count = row['count(rowid)'];
});
var stmt = db.prepare("INSERT INTO info VALUES (?)");
stmt.run('Lorem ipsum '+(count+1));
stmt.finalize();
});
如果我運行此代碼三次,檢查數據,我剛剛得到的字符串「Lorem存有1」三次。
此外,如果我的stmt.finalize
指令
db.each("SELECT count(rowid) FROM info", function(err, row) {
count = row['count(rowid)'];
console.log('count info',count);
});
db.each("SELECT rowid AS id, info FROM info", function(err, row) {
console.log(row.id + ": " + row.info)
});
查詢正確序列化後添加一些查詢代碼,我得到預期的計數,但還是壞的插入(在這個例子中我跑了插入代碼的五倍)
count info 5
1: Lorem ipsum 1
2: Lorem ipsum 1
3: Lorem ipsum 1
4: Lorem ipsum 1
5: Lorem ipsum 1
你能解釋db.prepare()
這種行爲?你能提出更正嗎?
我需要增加行的當前計數。您的代碼將始終插入0 1 2 3 4 –