扩展meteor用户模型

扩展meteor用户模型,meteor,Meteor,我正在尝试向users集合添加一个附加字段 我设置了正确的更新权限 //called in my template event handler for a form post Meteor.users.update(Meteor.userId(), { $set: { company: company._id }}); 但是,无论何时访问Meteor.user(),我都看不到company字段 我试着开了一家酒吧/酒吧,但我还是没能找到机会 有什么想法吗?默认情况下,您只能从客户端更新您的配置

我正在尝试向users集合添加一个附加字段

我设置了正确的
更新
权限

//called in my template event handler for a form post
Meteor.users.update(Meteor.userId(), { $set: { company: company._id }});
但是,无论何时访问Meteor.user(),我都看不到company字段

我试着开了一家酒吧/酒吧,但我还是没能找到机会


有什么想法吗?

默认情况下,您只能从客户端更新您的配置文件(而不是任意字段)。所以你可以做:

Meteor.users.update(Meteor.userId(), {$set: {'profile.company': company._id }});

这可能是你无论如何都想做的。有关允许/拒绝规则和向客户端发布用户字段的详细信息,请仔细阅读文档的。首先设置允许用户在配置文件字段之外更新的权限

Meteor.users.allow({
    update: function(userId, doc){
        return doc._id === userId; // can update their own profile
    }
});
然后设置公司字段的发布

Meteor.publish("userData", function () {
  return Meteor.users.find({_id: this.userId},
                           {fields: {'company': 1}});
});
订阅

Meteor.subscribe('userData');

事实证明,传递给新字段的值是未定义的。一旦我纠正了这一点,landlands的回答就完美地工作了。对于用户可以随时修改的字段,最简单的方法就是通过profile字段使用Meteor的内置支持,正如David Weldon所建议的那样。“配置文件”字段将自动为登录用户发布,并可由用户自动编辑。不需要额外的发布/订阅。在这种情况下,您只能更新配置文件对象下的用户集合吗?您可以更新用户上的任何字段,但默认情况下,您只能更新客户端上的配置文件。我怀疑这会随着时间的推移而改变,因为这是一个有点奇怪和武断的规则,会带来安全后果。更多细节,请参阅我文章的第一部分。前几天我被这个问题困扰了。我试图向用户集合中添加另一个字段,但无法。所以我最后在user.profile下添加了这个字段,效果很好。现在一切都在侧面,但出于某种原因,我觉得不太对。谢谢。你可以通过方法调用添加一个,但是你需要像这样发布它。