是否在Meteor更新期间允许使用字段名称的变量?

时间:2016-05-14 21:48:52

标签: meteor

我一直在尝试更新我拥有的一个集合。问题是,我不知道字段名称所以我依靠一些逻辑来提出字段名称。

例如

  Er.update({ _id: "BCwrQEdiTr9GMmKWW" }, {
    $set: {
      "x" : y
    }
  });

其中x是字段名称。

这是我的代码

var obj = {};
obj[x] = y;

Er.update({ _id: "BCwrQEdiTr9GMmKWW" }, {$set: {obj}});

我收到此错误

  

更新失败:MongoError:虚线字段' ersubjects.0.English'在   ' obj.ersubjects.0.English'对存储无效。

Englishersubjects下的字段,所以我希望以ersubjects.0.English的方式更新它,它适用于mongo。

为什么这不适用于流星?。

1 个答案:

答案 0 :(得分:0)

您无法存储密钥中包含点的文档。有关说明,请参阅this answer

你可以做的是使用lodash非常方便的_.set函数来创建你的对象,如下所示:

var obj = {};
var variableKey = 'ersubjects';
_.set(obj, [variableKey, 0, 'English], 'someValue');

现在您可以安全地将此对象存储到Mongo。