如何使pg-promise返回行作为数组?

时间:2016-03-15 19:42:54

标签: node.js postgresql pg-promise

我们怎样才能让pg-promise从查询返回行数组,而不是行对象数组?

1 个答案:

答案 0 :(得分:3)

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=>{});

另请参阅包装它们的类型:PreparedStatementParameterizedQuery

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

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=>{});