我有一个独特的案例,我需要使用 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/

10-10 00:12
查看更多