如何顺序解构多个查询结果?

How to destructure multiple query results in sequence?

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

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 很陌生,所以找到了自己的方式。

您仍然需要重构变量。如您所见,只需分配给 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;'));