Я пытаюсь выполнить вставку или обновление в базе данных postgres, используя node.js с расширением pg (версия 0.5.4).
Пока у меня есть этот код:
(...)
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}
** РЕДАКТИРОВАТЬ **
ОТВЕТ ОТ разработчика node-postgres:
Возможно получить количество строк, затронутых вставкой, и
Обновить. Это не полностью реализовано в родных привязках, но делает
работать в чистой версии JavaScript. Я буду работать над этим в рамках
на следующей неделе или две. В то же время использовать чистую версию JavaScript и
посмотрите здесь:
https://github.com/brianc/node-postgres/blob/master/test/integration/client/result-metadata-tests.js
** END EDIT **
Может кто-нибудь помочь?