pg-promise,格式为 json-object

pg-promise, format with json-object

从 pg-promise 的示例中,可以像下面这样格式化查询,其中 ${this~} 成为对象中的所有键,即 "format()" 的第二个参数。

// automatically list object properties as sql names:
format('INSERT INTO table(${this~}) VALUES(${one}, ${two})', {
    one: 1,
    two: 2
});
//=> INSERT INTO table("one","two") VALUES(1, 2)

是否可以在不显式键入所有值的情况下也获取对象的所有值?我想像下面那样做(应该和上面的代码片段做同样的事情,但不输入所有的值):

format('INSERT INTO table(${this~}) VALUES(${this#})', {
    one: 1,
    two: 2
});

Is it possible to also get all of the values of the object, without explicitly typing all of them?

不,这是不可能的,因为虽然列名需要相同类型的 SQL 名称转义,但值不需要,它们需要模板,这只能通过明确定义的变量实现。

I want to do it like below...

为此,您应该使用库的 helpers 方法:

const cs = new pgp.helpers.ColumnSet(['one', 'two'], {table: 'my-table'});
const query = pgp.helpers.insert(values, cs);