在Meteor中调用时,并非所有Mongo字段都显示出来

时间:2016-02-25 06:26:34

标签: mongodb meteor

当我在console.log中当前从服务器端登录的用户时,我看到了所有字段。当我从客户端执行相同操作时,我只获取_id和电子邮件字段。我很确定我订阅正确。

user2

2 个答案:

答案 0 :(得分:0)

这是因为

  

默认情况下,当前用户的用户名,电子邮件和个人资料均为   发布给客户。

来自文档here

像这样更新你的onCreateUser

Accounts.onCreateUser(function(options, user){

  if (options.profile) user.profile = options.profile;
  if (user.profile == null) user.profile = {};

  user['profile'].subreddits = [];
  console.log(user);
  return user;
});

答案 1 :(得分:0)

如果删除了自动发布,Meteor.users将只发布当前用户个人资料。

将以下发布添加到您的服务器代码:

Meteor.publish(null, function () {
    if (!this.userId) return this.ready();
    return Meteor.users.find({});
});

如果删除了自动发布,则客户端将自动发布并自动订阅空发布。

另外,请记住仅包含那些不敏感的字段。对于,例如。您可能希望省略密码字段或服务字段。

这样的事情:

Meteor.users.find({}, {
        fields: {
            profile : 1,
            emails  : 1
        }
    });