Вставить с идентификатором типа serial в pg-обещание

В pg-обещание, как я могу вставить данные, когда первичный ключ имеет тип Serial? Отсутствие идентификатора поля не создает ответа на вызов.

Приведенный ниже код не вызывает ошибок в перехвате (а также не выполняет ветвь then).

function postSecao(req, res){
  var data = req.body;
  var db = pgp(cn);
  db.none("insert into public.secoes(nome) values($1)", [data.nome])
  .then(function () {
      pgp.end();
      return res.status(201).end();
  })
  .catch(function (error) {
      console.log(err);
      pgp.end();
      return res.status(500).end();
  });

}

Стол:

CREATE TABLE public.secoes
(
  id bigint NOT NULL DEFAULT nextval('secoes_id_seq'::regclass),
  nome character varying(100),
  CONSTRAINT id PRIMARY KEY (id)
)

Предоставление идентификатора вручную работает без проблем.

function postSecao(req, res){
  var data = req.body;
  var db = pgp(cn);
  db.none("insert into public.secoes(id, nome) values($1,$2)", [data.id, data.nome])
  .then(function () {
      pgp.end();
      return res.status(201).end();
  })
  .catch(function (error) {
      console.log(err);
      pgp.end();
      return res.status(500).end();
  });

}

И, конечно, SQL прекрасно работает в PGAdmin.

insert into public.secoes(nome) values('test')

1 ответ

Я только что понял. Проблема заключалась в управлении привилегиями пользователя. Пользователь, обращающийся к БД, должен иметь права доступа к последовательностям, используемым в последовательном поле.

Так что не проблема pg-обещания.

Другие вопросы по тегам