1
任何人都可以給我任何建議如何檢查更新語句是否成功使用node.js和從npm安裝sqlite3安裝sqlite3包(https://github.com/developmentseed/node-sqlite3/wiki/API )如何檢查更新是否在node.js和sqlite3中成功?
要進行更新,我做了以下內容:
var id = req.params.id;
var thing = req.body;
stmt = db.prepare("UPDATE FOO set name=?, year=? where id=?");
stmt.bind(thing.name, thing.year, id);
stmt.run(function(err, result) {
if (err) {
res.send(JSON.stringify(err));
res.send({'error':'An error has occurred'});
} else {
if (result) {
console.log('Success: ' + JSON.stringify(result));
}
res.send(JSON.stringify(wine));
}
});
然而,結果是從來沒有定義。
如果我將stmt.run()更改爲stmt.all(),我得到一個結果,但它看起來是空的 - 將它打印到控制檯不顯示任何內容。
嗯 - 使用上面的代碼,試圖更新一個從不存在的行(所以指定一個在數據庫中不存在的id),err仍然沒有被定義/填充。 這就是爲什麼我正在查看結果字段,因爲錯誤是未定義的。 – Anonymouslemming
如果沒有什麼要更新,在上面的代碼之後err仍然是undefined。但是,函數內部的this.changes似乎解決了這個問題 - 謝謝! – Anonymouslemming
注意:es6風格的函數會自動綁定到lexical'this',從而阻止您在回調中訪問上述'this.changes' – geg