2017-02-21 2 views
1

Я использую pg-promise для нескольких проектов. Я прочитал это:pg-prom - Пример с процедурой

Функции и процедуры

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

Предположим, мы хотим вызвать функцию findAudit, чтобы найти записи аудита по user_id и максимальную метку времени. Мы можем сделать такой вызов, как показано ниже:

db.func('findAudit', [123, new Date()]) 
    .then(function (data) { 
    console.log(data); // printing the data returned 
}) 
    .catch(function (error) { 
    console.log(error); // printing the error 
}); 

В документации приводятся примеры для этих двух функций, за исключением. (Примечание: отличная документация в противном случае)

Может ли кто-нибудь предоставить пример для процедуры с помощью pg-promise?

PS: Я знаю, что это хранимая процедура, в Postgresql, но я не нашел пример с pg-promise (тот, кто мог не/Sucess) ...

Благодаря

+0

[API] (http://vitaly-t.github.io/pg-promise/Database.html#.proc) объясняет синтаксис. Есть ли проблемы с этим? –

ответ

0

Поскольку PostgreSQL поддерживает только функции , процедура считается такой функцией, которая либо не возвращает никаких данных, либо простой ответ, такой как сводка операций.

По этой причине pg-promise реализует метод proc, который не ожидает ни данных, ни одной строки/объекта данных.

db.proc('procName', [123, new Date()]) 
    .then(function (data) { 
    // data = either null or a single object 
}) 
    .catch(function (error) { 
    // either a generic error or because returned more than 1 row 
}); 
+0

, работающий также с настраиваемым исключением «RAISE Exception» вроде (RAISE 'Дублирующий идентификатор пользователя:%', user_id ИСПОЛЬЗОВАНИЕ ERRCODE = 'unique_violation';)? – jy95

+0

Пользовательские исключения в настоящее время не поддерживаются. –

+0

@jacquesy см. Также: https://github.com/vitaly-t/pg-promise/issues/259 –

Смежные вопросы