Mongodb 使用流星内相关收集的数据#每个

Mongodb 使用流星内相关收集的数据#每个,mongodb,templates,meteor,spacebars,Mongodb,Templates,Meteor,Spacebars,我有一个具有{name,id}字段的人员集合 我还有类似的字段,其中包含{user_id,foodName} 我想创建一个模板,将显示一个列表的人,他们喜欢的食物。我在模板中运行each,从Likes集合的查询中提取所有这些信息。我想从Likes中获取查询到的用户名,然后使用它从People集合中提取此人的关联姓名 我的模板如下所示: <template name="likes"> {{#each likes_list}} //This displays the user

我有一个具有{name,id}字段的人员集合

我还有类似的字段,其中包含{user_id,foodName}

我想创建一个模板,将显示一个列表的人,他们喜欢的食物。我在模板中运行each,从Likes集合的查询中提取所有这些信息。我想从Likes中获取查询到的用户名,然后使用它从People集合中提取此人的关联姓名

我的模板如下所示:

<template name="likes">
  {{#each likes_list}}
    //This displays the user_id, but I want to have it display the user's name
    <p>{{user_id}} likes {{foodName}}</p>
  {{/each}}
</template>
Template.likes.helpers({  
  likes_list: function() {
    return Likes.find();
  }
});
我看到两种解决方案:

  • userName
    字段添加到您的
    Likes
    集合中,并将其显示为like 这是模板中的
    {{userName}}
  • 创建发布功能,该功能将“加入”您的收藏(用户和爱好)。要执行此操作,请使用此软件包:

  • 您可以添加一个帮助器以返回用户数据上下文,然后将其与
    一起使用:

    html:


    如果愿意,可以将其映射到单个对象中

    Template.blah.helpers({
      likes: function () {
        return Likes.find().map(function (doc) {
          return _.extend(doc, {
            user: Meteor.users.findOne(doc.user_id)
          });
        });
      }
    });
    
    这将向集合中添加
    user
    字段,供您参考

    {{#each likes}}
      {{user.name}} likes {{foodName}}
    {{/each}}
    

    我想是客户端上的
    Meteor.userId()
    指定他有一个具有
    id
    而不是
    \u id
    的人集合,所以我一直在关注他的情况。如果人物集实际上是Meteor.users,那么这是一个简单的修改。我应该更具体一些。最终,我希望此功能与帐户facebook软件包配合使用。@MichelFloyd如何更改上述代码以实现此功能?
    Template.blah.helpers({
      likes: function () {
        return Likes.find().map(function (doc) {
          return _.extend(doc, {
            user: Meteor.users.findOne(doc.user_id)
          });
        });
      }
    });
    
    {{#each likes}}
      {{user.name}} likes {{foodName}}
    {{/each}}