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);
从 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);