如何只显示id等于与给定页面关联的特定ID的注释?

时间:2017-01-24 20:47:41

标签: javascript mongodb meteor

我正在尝试撰写基本的#34;网站讨论和分享#34;使用Meteor和MongoDB的应用程序。我对编码非常陌生,这只是为了我自己的启发。到目前为止,我已经写了这篇文章,我可以在与共享网站相关联的各个页面上发表评论,但每个网站页面上都会显示每条评论,无论评论是在哪个页面上进行的。我已经这样做,以便评论保存与siteId作为他们自己的Id所以我认为这将是容易的,但经过5个小时的摆弄和谷歌搜索,我没有取得任何进展。我将在下面提供相关的代码段,非常感谢您的帮助!

在main.html中我有这个模板......

<template name="discussSite">
    <h3>Discussing: {{url}} </h3>
    {{> addCommentForm}}

  {{#each comments}}
  <div class="comment" id={{siteId}}>
  <h4>{{text}}</h4>
  <h5>by {{createdBy}} on {{createdOn}}</h5>
  <h6>id: {{siteId}}</h6>

  </div>
  {{/each}}

</template>

在我的events.js中我有......

Template.addCommentForm.events({
 'click .js-add-comment':function(event){
     var comment_text = $('#comment_input').val();
     var user = 'anonymous person';
     var site = this;
     if (Meteor.user()){
         user = Meteor.user().emails[0].address
     }
     var comment = {"text":comment_text,
                    "siteId":site._id,
                 "createdOn":new Date(),
                 "createdBy":user};
    Comments.insert(comment);
     return false;
 }
});

最后,在我的helpers.js中(我知道这是问题的主要部分。我不太了解如何使用.find({})命令和过滤器......

Template.discussSite.helpers({

'comments':function(siteId){

return Comments.find();

},

});

总而言之,当我在网站#1上发表评论时,它会显示,但问题是网站#2和网站#3下显示相同的评论。如何将其附加到创建它的网站并将其保留在那里?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您的助手需要通过传入此siteId:

来过滤这样的数据
Template.discussSite.helpers({
    'comments':function(siteId){
        return Comments.find({"siteId":siteId});
    }
});