我想在postgres數據庫中使用node.js與pg擴展(版本0.5.4)插入或更新。在Postgres使用node.js的upsert
到目前爲止,我有這樣的代碼: (...)
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);
});
}
});
的問題是,儘管這兩個查詢的工作問題總是同時運行,而不是在更新失敗僅在運行插入功能。
代碼輸出類似的調試功能:
UPDATE
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}
**編輯**
ANSWE [R從節點的Postgres開發商:
它可以檢索受INSERT和 更新行數。它在本地綁定中沒有完全實現,但是 在純javascript版本中工作。我將在下週或兩週內在 內處理此問題。在平均時間使用純JavaScript版本和 看看這裏:
https://github.com/brianc/node-postgres/blob/master/test/integration/client/result-metadata-tests.js
**編輯完**
誰能幫助?
喜馬!感謝你的回答!我與node.js的pg模塊的開發人員聯繫了,並且我編輯了這個問題以表達他的迴應!關於你的答案,這是我最初的意圖,但是因爲我正在開發使用heroku並需要水龍頭來遷移數據庫我有一個問題,因爲我認爲水龍頭不能導出存儲過程。 (儘管我可能是錯誤的),無論如何,你能否告訴我關於存儲過程的性能問題?關於併發性問題我不認爲他們適用,但如果你可以發佈一些鏈接ilustrate Transictions它將是完美的...;)再次感謝! – jribeiro