2017-01-31 5 views
3

Я использую pgp.helpers.insert для сохранения данных в PostgreSQL, который хорошо работает. Тем не менее, мне нужно вернуть значения для ответа в ответ. Я использую:Как вернуть значения результата запроса вставки с помощью помощников pg-prom

this.collection.one(this.collection.$config.pgp.helpers.insert(values, null, 'branch')) 

который не возвращает данные.

То, что я хочу быть в состоянии сделать, это вернуть филиальный идентификатор после успешной вставки, таких как:

INSERT into branch (columns) VALUES (values) RETURNING pk_branchID 

ответ

2

Просто добавьте пункт RETURNING... сгенерированного запроса:

var h = this.collection.$config.pgp.helpers; 
var query = h.insert(values, null, 'branch') + 'RETURNING pk_branchID'; 

return this.collection.one(query); 

You должен иметь большой объект там, если вы хотите автоматически генерировать вставку. Пространство имен helpers в основном ценится при генерации многорядные вставки/обновления, и в этом случае ColumnSet используется в качестве статической переменной:

var h = this.collection.$config.pgp.helpers; 
var cs = new h.ColumnSet(['col_a', 'col_b'], {table: 'branch'}); 
var data = [{col_a: 1, col_b: 2}, ...]; 

var query = h.insert(data, cs) + 'RETURNING pk_branchID'; 

return this.collection.many(query); 

Обратите внимание, что в этом случае мы делаем .many, так как 1 или больше строк/результаты ожидаемый назад. Это может даже быть преобразован в только массив Ид с:

return this.collection.map(query, [], a => a.pk_branchID); 

см: Database.map

+0

Спасибо. Первоначально у меня был SQL в файле, но я думал использовать этот способ, чтобы обслуживать значения столбцов, которые могут быть нулевыми, которые могут отсутствовать в запросе. – Faz