如何使pg-promise将数据返回为数组?

我们如何让pg-promise从查询中返回一个行数组,而不是行对象数组呢?

pg-promise的 4.0.5版开始支持Prepared StatementsParameterized Queries高级参数,就像它们在node-postgres中一样 。 其中一个参数rowMode可以设置为array以使驱动程序将数据返回为数组。

 // Prepared Statement: db.query({ name: 'my-prep-statement', text: 'select ...', // a query or a QueryFile object (see PreparedStatement) values: [], rowMode: 'array' }).then(data=>{}).catch(reason=>{}); // Parameterized Query: db.query({ text: 'select ...', // a query or a QueryFile object (see ParameterizedQuery) values: [], rowMode: 'array' }).then(data=>{}).catch(reason=>{}); 

另请参阅包装它们的types: PreparedStatement和ParameterizedQuery 。

下面的代码等同于上面的代码,但提供更好的性能+可重用性+分别设置值的灵活性。

 var 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' }); db.query(ps).then(data=>{}).catch(reason=>{}); var 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' }); db.query(pq).then(data=>{}).catch(reason=>{});