我想使用相同的模式来销毁查询结果,但似乎做不到。在以下代码中:
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;'));