如何顺序解构多个查询结果?
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;'));
我想使用相同的模式来解构查询结果,但似乎不能。在以下代码中:
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;'));