2013-01-20 42 views
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(),我得到一個結果,但它看起來是空的 - 將它打印到控制檯不顯示任何內容。

回答

2

result用於從SELECT查詢返回的記錄。

如果UPDATE命令失敗,則獲得err

要了解有多少條更新記錄,請參閱changes

+0

嗯 - 使用上面的代碼,試圖更新一個從不存在的行(所以指定一個在數據庫中不存在的id),err仍然沒有被定義/填充。 這就是爲什麼我正在查看結果字段,因爲錯誤是未定義的。 – Anonymouslemming

+1

如果沒有什麼要更新,在上面的代碼之後err仍然是undefined。但是,函數內部的this.changes似乎解決了這個問題 - 謝謝! – Anonymouslemming

+0

注意:es6風格的函數會自動綁定到lexical'this',從而阻止您在回調中訪問上述'this.changes' – geg