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))
最佳答案
任何以{ ... }
开头的语句始终将带括号的序列解析为代码块而不是对象(包括解构对象表达式)。
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}
也有效您的
( ... )
表达式必须以分号开头,或者可以将其用于执行上一行的功能。关于javascript - 通过对先前声明的变量进行解构分配来获取linter错误“意外 token =”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58490255/