在我的用户集合中,我有一个包含联系人数组的对象。 对象定义如下。 如何将整个联系人的整个对象从服务器写入Meteor中的用户数据库,理想情况下是在一个命令中? 我花了相当多的时间阅读mongo docs和meteor docs,但是无法让它工作。 我还尝试了大量不同的命令和方法,使用整个对象和迭代组件部分来尝试实现这一点,但没有成功。这是一个尝试使用$ set:
编写整个联系人对象的(不成功)示例 Meteor.users.update({ _id: this.userId }, {$set: { 'Contacts': contacts}});
谢谢。
对象定义(这是用户集合中的一个字段):
"Contacts" : {
"contactInfo" : [
{
"phoneMobile" : "1234567890",
"lastName" : "Johnny"
"firstName" : "Appleseed"
}
]
}
答案 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)
上面的命令是正确的。问题是架构验证。简单模式在“在后台”运行时失去了写入数据库的能力。它不会产生错误,只是无法产生预期的结果。