2017-11-17 1 views
2

こんにちは私はノードJSをMYSQLで使用しており、履歴更新がnode-mysqlとどのように動作するかを見ています。私はテーブル内のIDで行を更新しようとすると、その行を取得し、新しいタイムスタンプで更新し、ID 2の新しい行を挿入し、更新タイムスタンプを挿入したくないという問題に直面しています。歴史的な更新mysqlノードjs

ID | Owner | app | status | INSERT_DT   | UPDATE_DT 
1  11  Ok  1  2015-15-20 13:00:21 NULL 

は、今私は、ステータスを変更することで、上記の行を更新するとき、それは

ID | Owner | app | status | INSERT_DT   | UPDATE_DT 
1  11  Ok  1  2015-15-20 13:00:21 20-15-20 12:00:12 
2  11  Ok  0  2015-15-20 12:00:12 | NULL 

来るべきであるので、私はこのような行を取得...

getUserPath = (Owner) => new Promise((resolve, reject) => { 
    db.query('SELECT * from path where Owner = ?', Owner, function (error, results, fields) { 
     if (error) { 
      reject('Could not get user path'); 
     } 
     resolve(results[0]); 
    }); 
}); 

以下のアップデートでは、行全体を更新する方法がわかりません。 だからdata

UpdateUserPath = (data) => new Promise((resolve,reject)=>{ 
data.INSERT_DT = '2015-15-20 12:00:12'; 
    db.query('UPDATE path set data', data , function(err,results,fields){ 
     if(err){ 
      reject('Could not update user path'); 
     }else{ 
      if(results.affectedRows > 0){ 
       //Making the new row 
       data.ID = null; 
       insertNewPath(data); 
      }else{ 
       reject('Could not update user path'); 
      } 
     } 
    }); 
}); 

更新文は私にエラーを返し上記のすべての情報が含まれており、私はそれが働いて取得する方法を確認していません。 私は、セットに手作業でアップデートするフィールドを必要とすると思っていますが、そうしたくないので、一度にすべてのフィールドを実行したいと思っています。

答えて

1

更新ステートメントが間違っています。上記のテーブルを更新しようとすると:

db.query('UPDATE path set ID=?, Owner=?, app=?, status=?, INSERT_DT=?, UPDATE_DT=?',[data.ID,data.Owner,data.app,data.status,data.insert_dt,data.update_dt] , function(err,results,fields){ ... 
+0

しかし、設定中にデータとして呼び出されるものはありません。設定しようとしていることをmysqlが理解していないと思います。 – FaF

+0

私は実際に上記のステートメントを知っている、私はちょうどそれをやって簡単な方法があると思った。 – FaF