Meteor中的更新期间是否允许字段名变量?

Meteor中的更新期间是否允许字段名变量?,meteor,Meteor,我一直在尝试更新我的一个集合。问题是,我不知道字段名,所以我依靠一些逻辑来找到字段名 比如说 Er.update({ _id: "BCwrQEdiTr9GMmKWW" }, { $set: { "x" : y } }); 其中x是字段名 这是我的密码 var obj = {}; obj[x] = y; Er.update({ _id: "BCwrQEdiTr9GMmKWW" }, {$set: {obj}}); 我得到了这个错误 更新失败:MongoEr

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

比如说

  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”对于存储无效

English
ersubjects
下的一个字段,所以我想用这种方式更新它
ersubjects.0.English
,它在mongo上工作


为什么这在meteor中不起作用?

您不能存储键中有点的文档。请参阅以获取解释

您可以使用lodash极其方便的功能创建具有动态关键点的对象,如下所示:

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

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

投诉集不是函数。您使用的是什么版本的lodash<代码>.\uSet可以从3.7.0OMG版本中获得,我刚刚安装了0.7.1,这看起来有点奇怪,因为他们的官方lodash发行版位于atmosphere
alethes:lodash
这是atmosphere上最常用的软件包。作为旁注,我建议使用meteor 1.3并尽快从大气迁移到npm包。不再有类似这样的问题:)我将很快切换到npm。在助手中使用lodash被证明是有问题的,即使在安装了lodash之后也是如此。