pg-promiseでは、主キーがシリアル型の場合、どのようにデータを挿入できますか? フィールド ID を省略すると、呼び出しで応答が作成されません。
以下のコードは、catch でエラーを生成しません (また、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)
)
手動で 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')