我有一种独特的情况,我需要使用Javacript符号作为对象的键。这是必要的,因为为了符合Sequelize的文档,在某些情况下,我们需要具有以下内容:
const where = {
cost: {
[Op.gt]: 1000,
[Op.lt]: 2000
}
}
[Op.gt]
和[Op.lt]
都是有助于查询的Javascript符号。代码块将查询名为cost
的属性大于1000
但小于2000
的位置。但是当我尝试以编程方式设置键/值对时:
where['cost'][[Op.gt]] = 1000;
我收到以下错误:
无法将符号值转换为字符串
这是一个动态对象,因此我不能将符号硬编码到where
查询中,因为下一个用户可能不需要通过这些参数查询。我该怎么办?谢谢!
答案 0 :(得分:1)
删除符号周围的1个括号,您会没事的:
F5
where['cost'][Op.gt] = 1000;
表示您正在使用obj[Op.gt]
名称访问对象属性。 Op.gt
表示您正在访问名称等于字符串化数组obj[[Op.gt]]
的对象属性。类似于以下内容:
[Op.gt]