2015-03-03 8 views
3

Есть ли что-то особенное, что мне нужно сделать с параметризованным запросом?Почему я не могу удалить из db с помощью node-postgres?

следующее, кажется, успеха (я использую обещание маньяков client.query видеть конец),

console.log('cancel for', data); 
var cancelInviteQuery = 'delete from friendship where user_1=$1 and user_2_canonical=$2'; 
return query(cancelInviteQuery, [data.id, data.friend]) 
    .then(function (results) { 
    console.log('ran delete frienship', results); 
    }) 
    .catch(function (error) { 
    console.error('failed to drop friendship', error); 
    }); 

, потому что я получаю вывод:

cancel for {"id":3,"friend":"m"} 
ran delete frienship [] 

, но затем следующий запрос из база данных показывает, что запись все еще существует

select * from friendship; 
id | user_1 | user_2 | user_2_canonical | confirmed | ignored 
----+--------+--------+------------------+-----------+--------- 
    8 |  3 |  9 | m    | f   | f 

, а затем следующий запрос удался, когда я мак е непосредственно к базе данных (с помощью PSQL клиента)

delete from friendship where user_1=3 and user_2_canonical='m' 

моя query функция (обертка Близится узел-Postgres client.query):

function query(sql, params) { 
    var promise = new RSVP.Promise(function (resolve, reject) { 
    pg.connect(CONNECTIONSTRING, function (error, client, done) { 
     if (error) { reject(error); return; } 

     client.query(sql, params, function (error, result) { 
     done(); // Greedy close. 
     if (error) { 
      reject(error); 
      return; 
     } 
     else if (result.hasOwnProperty('rows')) { 
      resolve(result.rows); 
     } else { resolve(result.rows); } 
     }); 
    }); 
    }); 
    return promise; 
} 
+0

Что-то не так с вашу переменную 'data'. В 'console.log' отображается' 'friend ':« m »', но вы ожидаете, что это будет '' friend': «mike» '. – victorkohl

+0

Извините @victorkohl это была неряшливая паста. – Michael

+0

Вы решаете эту проблему? Если не отправить больше информации –

ответ

0

Попробуйте

var cancelInviteQuery = 'delete from friendship where user_1 IN ($1) and user_2_canonical IN ($2)';