将包含对象数组的对象写入Meteor中的mongo数据库

时间:2017-05-17 18:54:44

标签: javascript mongodb meteor

在我的用户集合中,我有一个包含联系人数组的对象。 对象定义如下。 如何将整个联系人的整个对象从服务器写入Meteor中的用户数据库,理想情况下是在一个命令中? 我花了相当多的时间阅读mongo docs和meteor docs,但是无法让它工作。 我还尝试了大量不同的命令和方法,使用整个对象和迭代组件部分来尝试实现这一点,但没有成功。这是一个尝试使用$ set:

编写整个联系人对象的(不成功)示例
    Meteor.users.update({ _id: this.userId }, {$set: { 'Contacts': contacts}});

谢谢。

对象定义(这是用户集合中的一个字段):

"Contacts" : {
    "contactInfo" : [
        {
            "phoneMobile" : "1234567890", 
            "lastName" : "Johnny"
            "firstName" : "Appleseed"
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

此更新应该绝对有效。我怀疑发生的是您没有将Contacts数据发布回客户端,因为Meteor不会自动发布当前用户文档中的每个密钥。因此,您的更新正在运行并将数据保存到mongo,但您没有在客户端上看到它。您可以通过在命令行上执行meteor mongo然后检查相关用户文档来检查这一点。

尝试:

服务器:

Meteor.publish('me',function(){
  if (this.userId) return Meteor.users.find(this.userId, { fields: { profile: 1, Contacts: 1 }});
  this.ready();
});

客户端:

Meteor.subscribe('me');

答案 1 :(得分:-1)

上面的命令是正确的。问题是架构验证。简单模式在“在后台”运行时失去了写入数据库的能力。它不会产生错误,只是无法产生预期的结果。