首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Meteor中的辅助集合中查找

如何从Meteor中的辅助集合中查找
EN

Stack Overflow用户
提问于 2016-04-14 15:22:22
回答 1查看 42关注 0票数 1

我正在建立一个简单的聊天客户端在Meteor。聊天消息存储在Chats集合中,该集合具有一条消息,其中包含用户的id和用户的id,以及消息,如下所示:

代码语言:javascript
复制
   {
     "_id" : "3Wo3EHYG8oPCS4TCc",
     "message" :
      {
         "from" : "oSiKCdvCHGrfnfQoT",
         "to" : "ESXbJXeWmNanz7zKq",
         "text" : "Hello"
       }
    }

用户存储在集合用户中,集合具有id和用户名:

代码语言:javascript
复制
    meteor:PRIMARY> db.users.find()
    { "_id" : "oSiKCdvCHGrfnfQoT", "username" : "user1" }
    { "_id" : "ESXbJXeWmNanz7zKq", "username" : "user2" }

我有一个HTML页面,它显示这样的消息

代码语言:javascript
复制
<body>
  <h1>Test</h1>
  {{> hello}}
</body>

<template name="hello">
  {{#each messages}}
    From {{message.from}} to {{message.to}}: {{message.text}}
  {{/each}}
</template>

使用以下模板助手:

代码语言:javascript
复制
Chats = new Mongo.Collection("chats");
Users = new Mongo.Collection("users");
import './main.html';

Template.hello.helpers({
  messages:function(){
    return Chats.find();
  }
})

这将创建以下输出:

代码语言:javascript
复制
   Test
   From oSiKCdvCHGrfnfQoT to ESXbJXeWmNanz7zKq: Hello

但是,在HTML页面中,我希望查找用户的用户名,而不是显示他们的原始ids。我知道我可以将用户名存储在聊天集合中,但我宁愿保持它的干净。当然,我也可以在模板助手函数中进行查找,并创建一个新的数据结构,它模拟消息,但用用户名替换ID。然而,这是一个相当笨拙的解决方案,我宁愿在HTML端进行查找。这个是可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-14 18:39:57

下面是一种可以在模板上使用的方法:

代码语言:javascript
复制
Template.registerHelper('username',function(userId){
  var user = Meteor.users.findOne(userId);
  return user && user.username;
});

然后,在任何模板中,只需执行{{username message.from}} (例如),用户名就会自动插入。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36627465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档