pg拡張子(バージョン0.5.4)のnode.jsを使用して、postgresデータベースに挿入または更新を行おうとしています。
これまでのところ、私はこのコードを持っています:(...)
client.query({
text: "update users set is_active = 0, ip = $1 where id=$2",
values: [ip,id]
}, function(u_err, u_result){
debug(socket_id,"update query result: ",u_result);
debug(socket_id,"update query error: ",u_err);
date_now = new Date();
var month = date_now.getMonth() + 1;
if(!u_err){
client.query({
text: 'insert into users (id,first_name,last_name,is_active,ip,date_joined) values' +
'($1,$2,$3,$4,$5,$6)',
values: [
result.id,
result.first_name,
result.last_name,
1,
ip,
date_now.getFullYear() + "-" + month + "-" + date_now.getDate() + " " + date_now.getHours() + ":" + date_now.getMinutes() + ":" + date_now.getSeconds()
]
}, function(i_err, i_result){
debug(socket_id,"insert query result: ",i_result);
debug(socket_id,"insert query error: ",i_err);
});
}
});
問題は、両方のクエリは機能しますが、更新が失敗した場合に挿入関数を実行するだけでなく、常に両方を実行しているということです。
コード内のデバッグ関数は、次のように出力します。
アップデート
Object { type="update query result: ", debug_value={...}}
home (linha 56)
Object { type="update query error: ", debug_value=null}
home (linha 56)
Object { type="insert query result: "}
home (linha 56)
Object { type="insert query error: ", debug_value={...}}
入れる
Object { type="update query result: ", debug_value={...}}
home (linha 56)
Object { type="update query error: ", debug_value=null}
home (linha 56)
Object { type="insert query result: ", debug_value={...}}
home (linha 56)
Object { type="insert query error: ", debug_value=null}
** 編集 **
node-postgres開発者からの回答:
挿入と更新の影響を受ける行数を取得することができます。ネイティブバインディングでは完全には実装されていませんが、純粋なjavascriptバージョンでは機能します。私は来週か2週間以内にこれに取り組みます。それまでの間、純粋なjavascriptバージョンを使用して、こちらをご覧ください。
https://github.com/brianc/node-postgres/blob/master/test/integration/client/result-metadata-tests.js
**編集終了**
誰か助けてもらえますか?