我正在使用pgp.helpers.insert将数据保存到PostgreSQL中,这种方式运行良好。但是,我需要返回值以在响应中显示。我正在使用:
this.collection.one(this.collection.$config.pgp.helpers.insert(values, null, 'branch'))
,不返回任何数据。
我希望能够做的是在成功插入后返回分支ID,例如:
INSERT into branch (columns) VALUES (values) RETURNING pk_branchID
答案 0 :(得分:5)
只需将RETURNING...
子句附加到生成的查询中:
var h = this.collection.$config.pgp.helpers;
var query = h.insert(values, null, 'branch') + 'RETURNING pk_branchID';
return this.collection.one(query);
如果要自动生成插入,则必须有一个大对象。在生成多行插入/更新时,命名空间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行或更多行/结果。这甚至可以转换为id-s数组:
return this.collection.map(query, [], a => a.pk_branchID);
请参阅:Database.map