let data = []
let count, meta
if (req.params.id === 'count') {
// get count only
} else {
{ data, count } = await myModel.find(filter, options)
meta = { count }
}
给了我一个linter错误:“解析错误:销毁分配时出现意外的令牌=”。这只是我需要更改的linter配置中的设置吗?
我可以使用括号消除错误,但是为什么要这样做?
({ data, count } = await myModel.find(filter, options))
答案 0 :(得分:1)
任何以{ ... }
开头的语句将始终将带括号的序列解析为代码块而不是对象(包括解构对象表达式)。
MDN在其documentation on destructuring中阐明了这种确切情况:
var a, b; ({a, b} = {a: 1, b: 2});
注意:使用不带声明的对象文字解构分配时,需要在赋值语句周围加上括号
( ... )
。
{a, b} = {a: 1, b: 2}
是无效的独立语法,因为左侧的{a, b}
被认为是一个块,而不是对象文字。不过,
({a, b} = {a: 1, b: 2})
和var {a, b} = {a: 1, b: 2}
都是有效的您的
( ... )
表达式必须以分号开头,或者可以将其用于执行上一行的函数。