我有一个独特的案例,我需要使用 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
查询中,因为下一个用户可能不需要通过这些参数进行查询。我该怎么做?谢谢! 最佳答案
删除符号周围的 1 个括号,你会没事的:
where['cost'][Op.gt] = 1000;
obj[Op.gt]
表示您正在访问具有 Op.gt
名称的对象属性。 obj[[Op.gt]]
意味着您正在访问名称等于字符串化的数组 [Op.gt]
的对象属性。类似于以下内容:const arr = [Op.gt];
const propertyName = arr.toString(); // => throw error "Cannot convert a Symbol value to a string"
where['cost'][propertyName];
关于javascript - 如何将 Javascript 符号设置为对象键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58157594/