Как преобразовать команду PostgresQL в синтаксис построителя запросов SQL - PullRequest
0 голосов
/ 09 июня 2018

У меня есть следующая команда Postgres:

UPDATE users SET weightsovertime = weightsovertime || '{"weight":35,"date":"1/9/97"}'::jsonb where id = 20;

, и я хотел бы преобразовать ее в команду построителя запросов SQL с использованием таких библиотек, как Knex.js.

Я пробовал это:

postgres('users')
.where('id','=',id)
.update({
    weightsovertime: weightsovertime +'||' + data + '::jsonb' 
})
.returning('weightsovertime')
.then(response => {
    res.json(response[0]);
})
.catch(err => res.status(400).json('unable to get entries'));

Но это не работает, я также пытался обернуть weightsovertime в кавычки, но я получил ошибку «невозможно получить записи».

Буду очень признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 20 июня 2018

С pg-обещанием это будет:

const data = {
    id: 20,
    weightsovertime: {
        weight: 35,
        date: '1/9/97'
    }
};

db.none('UPDATE users SET weightsovertime = weightsovertime || ${weightsovertime}::jsonb WHERE id = ${id}', data)
    .then(() => {
        /* success */
    })
    .catch(error => {
         /* failure */
    });
0 голосов
/ 18 июня 2018

С knex (https://runkit.com/embed/3ppka63pplpa):

knex('users').update({
  weightsovertime: knex.raw('?? || ?::jsonb', [
    'weightsovertime', 
    JSON.stringify({ weight: 35, date: '1/9/97' })
  ])
}).where('id', 20)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...