Meteor - 注册时无法访问自定义用户字段

时间:2016-01-06 08:12:17

标签: meteor reactjs

用户注册后,我使用React作为我的前端为Meteor用户添加了一个新字段:

反应组件:

Accounts.createUser({
 email: trimInput(this.state.email),
 password: this.state.password,
 username: trimInput(this.state.username),
 regId: 1, // I need to access this to show/hide fields elsewhere.
});

服务器

// I assume this is how it's done?
Accounts.onCreateUser(function(options, user) {
  user['regId'] = options.regId
  return user
});

meteor mongo我可以看到新添加的字段:"regId": "1"。大。现在在浏览器控制台中:Meteor.user.find().fetch()不包括该字段。 Meteor.user().regId返回undefined。咦?

接近这样的事情的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

我认为以前的答案很好,但你应该改进以便删除 Meteor.subscribe("userData"); 在每个控制器中自动发布。

`Meteor.publish(null, function () {
  if (this.userId) {
    return Meteor.users.find({_id: this.userId},
                             {fields: {'regId': 1}});
  } else {
    this.ready();
  }
});`

答案 1 :(得分:0)

基于documentation,我需要发布/分发数据:

服务器

Meteor.publish("userData", function () {
  if (this.userId) {
    return Meteor.users.find({_id: this.userId},
                             {fields: {'regId': 1}});
  } else {
    this.ready();
  }
});

<强>客户端:

Meteor.subscribe("userData");

现在您可以访问Meteor.user().regId