我们如何使得 pg-promise 返回一个由查询结果行数组组成的数组,而不是由行对象组成的数组呢?
pg-promise 支持高级参数的 Prepared Statements
和 Parameterized Queries
,就像在 node-postgres 中一样。其中一个参数 - rowMode,可以设置为 array
,使驱动程序将行作为数组返回。
// Prepared Statement:
await db.any({
name: 'my-prep-statement',
text: 'select ...', // a query or a QueryFile object (see PreparedStatement)
values: [],
rowMode: 'array'
});
// Parameterized Query:
await db.any({
text: 'select ...', // a query or a QueryFile object (see ParameterizedQuery)
values: [],
rowMode: 'array'
});
下面的代码与上面的代码等效,但提供更好的性能、可重复使用性和分别设置值的灵活性。
const ps = new pgp.PreparedStatement({
name: 'my-prep-statement',
text: 'select ...', // a query or a QueryFile object (see PreparedStatement)
values: [], // alternatively, can be set when calling a query method
rowMode: 'array'
});
await db.any(ps);
const pq = new pgp.ParameterizedQuery({
text: 'select ...', // a query or a QueryFile object (see ParameterizedQuery)
values: [], // alternatively, can be set when calling a query method
rowMode: 'array'
});
await db.any(pq);