【问题标题】:Meteor: Join by userId but display username, publishing user data?Meteor:通过 userId 加入但显示用户名,发布用户数据?
【发布时间】:2016-01-29 13:57:54
【问题描述】:

所以,我有一堆集合通过 userId 作为外键加入 Meteor.users 集合。例如。我有帖子集合,每个帖子都有自己的页面。在帖子页面上,我将 userId 作为作者,并且该帖子上的一堆 cmets(来自 Comments 集合)每个都有 postId 和 userId。 UserId 很难看,我想显示用户名。你将如何做到这一点?我可以使用的任何智能包或工作示例?我不喜欢发布所有用户数据的想法。谢谢。

【问题讨论】:

    标签: meteor publish-subscribe meteor-helper


    【解决方案1】:

    您不需要发布所有数据。在发布方法中,您可以通过这种方式使用fields 说明符:

    Meteor.users.find({}, {fields: {'username': 1}});

    这样你只发布了_idusername

    然后在流星助手中你可以拥有:

    username: function() {
      var user = Meteor.user.findOne(this.userId);
      return user.username || user.profile.name;
    }
    

    如果 Post 是您的上下文

    【讨论】:

    • 是的。发布此问题后,我使用了发布复合包。现在使用这种方法我只发布用户名和个人资料字段。但是出现了另一个问题xD。我还使用 useraccounts 包和第三方帐户服务。 Facebook 和 Google 提供这样的用户数据:profile.name: "John" 不像 ATCreateUserServer 方法使用 username: "John" 创建用户对象。现在在客户端上,我需要弄清楚帮助函数如何根据帐户服务返回用户名(或名称)。我不是最有经验的程序员,所以祈祷。谢谢
    • 我编辑了我的答案 - 你可以使用逻辑运算符 || - 助手尝试返回username,但如果它为空或未定义,它会尝试返回profile.name。希望它能解决你的问题。
    • 我有所有服务的 user.profile.name。关于 Accounts.onCreateUser 函数 user.profile = {}; user.profile.name = 选项.用户名;返回用户;现在不需要在助手上使用逻辑。谢谢,非常感谢。
    猜你喜欢
    • 2016-04-04
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2018-06-22
    • 2016-10-01
    • 2015-04-21
    • 1970-01-01
    相关资源
    最近更新 更多