Upsert в Postgres с использованием node.js

Я пытаюсь выполнить вставку или обновление в базе данных postgres с помощью узла .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);
                });
            }
        });

Проблема в том, что, хотя оба запроса работают, проблема всегда выполняется как вместо того, чтобы запускать только функцию вставки в случае сбоя обновления.

Функции отладки в коде выводят что-то вроде:

ОБНОВЛЕНИЕ

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

** КОНЕЦ РЕДАКТИРОВАНИЯ **

Кто-нибудь может помочь?

5
задан jribeiro 3 November 2011 в 15:26
поделиться