首页 > 解决方案 > 如何按顺序解构多个查询结果?

问题描述

我想使用相同的模式来解构查询结果,但似乎我不能。在以下代码中:

var {rows} = await client.query("SELECT id FROM mytable;");
var Id = rows[0].id; //destructured here as expected

如果我随后遵循:

rows = await client.query('SELECT max(id) as id FROM table2;');

我可以访问该值的唯一方法是这样的:

rows.rows[0].id;

我不应该像这样访问吗?

rows[0].id;

我需要以某种方式重置{rows}吗?

对 JS 非常陌生,所以找到了我的方式。

标签: node.jsdestructuringpg-query

解决方案


您仍然需要重组变量。rows正如您所见,只需分配给将获得分配给变量的完整响应对象。

解构到同一个变量有几个问题,因为你不能这样做:

let {rows} = await client.query("SELECT id FROM mytable;");
// Error: unexpected token without declaration
{rows} = await client.query('SELECT max(id) as id FROM table2;');
// Error: Identifier 'rows' has already been declared
let {rows} = await client.query('SELECT max(id) as id FROM table2;');

您可以var多次声明:

var {rows} = await client.query("SELECT id FROM mytable;");
// no problemo
var {rows} = await client.query('SELECT max(id) as id FROM table2;');

如果要声明,let则需要执行以下操作:

let {rows} = await client.query("SELECT id FROM mytable;");
// this works too…
({rows} = await client.query('SELECT max(id) as id FROM table2;'));

推荐阅读