Node-postgres-展平查询结果数组

时间:2019-08-09 12:42:51

标签: node.js postgresql typescript multidimensional-array flatten

我想从数据库表中获取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 }],它不能满足我的需要。

1 个答案:

答案 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