Accounts.onCreateUser不向Meteor的用户集合添加字段

时间:2015-01-28 02:08:21

标签: javascript meteor

我想为Meteor的用户集添加一个新字段:

服务器/ fixtures.js:

Accounts.onCreateUser(function(options, user) {
  user.role = 'Student'
  // We still want the default hook's 'profile' behavior.
  if (options.profile)
    user.profile = options.profile;
  return user
})

但是当我做Meteor.users.find().fetch();时:

Object
_id: "7zLDKQE4ACJCfeEhr"
username: "alex"
__proto__: Object

我没看到这个领域。

不在模板中工作:

文件/ document_page.js:

  users: function() {
    var users = _.map(Meteor.presences.find().fetch(), function(user) { 
      return Meteor.users.findOne({_id: user.userId})
    })

    return users
  },

文件/ user.html

<template name="user">
  <li class="clearfix">
    <img src="/avatar.png"/>
    <div class="user-info">
      <p>{{userId}}</p>
      <p>{{username}}</p>
      <p>{{role}}</p>
    </div>
  </li>
</template>

仅显示用户名。可能是什么问题?

1 个答案:

答案 0 :(得分:2)

您需要发布自定义字段。来自文档:

  

默认情况下,服务器发布用户名,电子邮件和个人资料(可由用户写入)。有关用户文档中使用的字段的更多信息,请参阅Meteor.users。

最简单的方法是使用null名称发布,该名称将自动发布文档而无需相应的Meteor.subscribe

Meteor.publish(null, function() {
  return Meteor.users.find(this.userId, {fields: {role: 1}});
});

在这种情况下,我们将发布role字段,该字段将与已为当前用户发布的默认字段合并。