我想从数据库表中获取ID数组作为一维数组。
我已将QueryArrayConfig用于查询字符串,并将rowMode设置为“ array”。我可以正确获取我的ID,但是它返回一个二维数组。
const idQuery: pg.QueryArrayConfig = {
name: 'get-ids',
text: 'SELECT id FROM MySchema.SomeTable'
rowMode: "array"
};
pool.query(idQuery).then((result: pg.QueryResult) => {
console.log(result.rows);
...
我得到:[ [ 1 ], [ 2 ] ]
,但是我需要[1 , 2]
。 是否可以直接对查询执行此操作?还是在得到结果后需要对数组进行展平?
编辑:
如果删除rowMode: array
,则会得到一个JavaScript对象数组:[anonymous { id: 1 }, anonymous { id: 2 }]
,它不能满足我的需要。
答案 0 :(得分:0)
如果您使用rowMode
的'Array',它将根据文档https://node-postgres.com/features/queries#Query%20config%20object返回每一行作为单独的数组。默认是将每个对象作为一个对象返回,因此只需删除rowMode:"array"
行,看看是否行得通。
有了对象,您可以对原始结果使用map
或数组,可以使用简单的flatMap
let results = result.flatMap(row => row); // for the array or array results
let results = result.map(item => item.id); // for the object results