【问题标题】:Connecting two collections in meteor (comments on posts)在流星中连接两个集合(对帖子的评论)
【发布时间】:2016-08-28 11:16:07
【问题描述】:

我做了两个收藏,一个用于帖子,一个用于 cmets。现在,除了每个帖子上的每个评论都显示之外,现在一切正常。我不知道如何将一条评论与“他的”帖子联系起来。我想在他的评论中保存帖子的 ID,但我不知道以后如何将这两者联系起来。这是我在 GitHub 上的应用程序的链接(它是小应用程序,代码清晰)。谢谢! enter link description here

帖子的主要收藏

    Predlozi = new Mongo.Collection('BazaPredlozi');

// ------------------------------------------------------------------------
if (Meteor.isServer) {
   Meteor.startup(function () {

   }); 

    Meteor.publish('BazaPredlozi', function() {
      return Predlozi.find();
    });



   /************************************/
        Accounts.onCreateUser(function (options, user) {      

              user.profile = options.profile ? options.profile : {};
              user.profile.неискоришћениГласови = 3;
              user.profile.nivo = 'smrtnik';
                 return user;
        });       

/********************************/
};


//--------------------------------------------------------------------------

if (Meteor.isClient) {


    Meteor.subscribe('BazaPredlozi');   


    Template.body.helpers({
      Podaci: function() {
        return Predlozi.find();
      },  
      YouShallNotPass: function () {
       var user = Meteor.user();
       var nivo = user && user.profile && user.profile.nivo;
       return nivo === 'supermen';
  },

});

  Template.UnosPredloga.events({

    'submit .Prijava': function(event) { 
        event.preventDefault();
        var naslov = event.target.наслов.value;
        var opis = event.target.опис.value;
        var korisnik = Meteor.user()._id;

          Predlozi.insert ({
             наслов : naslov,
             опис : opis,
             унео: korisnik ,
             Број_Гласова: 0,         
             Време_Уноса: new Date()
          });      
          event.target.наслов.value = "";
          event.target.опис.value = "";
          return false;        
     }
  });   

// -------------
}

主 HTML

<head>
  <title>Видео конференције</title>
</head>

<body style="margin: 0;">
<!-- -->
  <div class="kontejner">
      <header>
        <h1>Пријаве за видео-конференцију</h1>  
        {{#if currentUser}}       
         {{> UnosPredloga}}
         {{/if}}

      </header>
          {{> templateSkočko}}  
      <ul style="border: 3px solid pink; margin: 5px;">
          {{#each Podaci}} 
            <div style="border: 3px solid red; margin: 5px;">            
             {{> PodaciT}}

           {{#if currentUser}} 
               {{> glasajDugme}}
               {{> KomentarForma}}
                   {{#each komentari}}
                    {{> PrikazKomentara}}
                   {{/each}}

           {{/if}}     

             {{#if YouShallNotPass}}
              {{> obrišiDugme}}
              {{/if}}

            </div>
          {{/each}}          
      </ul>
  </div>
<!-- --> 
<div style="background-color: blue; color: red;"> {{> loginButtons}} </div>
</body>

帖子插入模板

<template name="UnosPredloga">
    <form class="Prijava">
            <input type="text" name="наслов" placeholder="Наслов" id="NaslovPredloga" required >
            <input type="text" name="опис" placeholder="Опис" id="OpisPredloga" required>           
            <input type="submit" value="Пошаљи" id="DugmeZaUnosPredloga">
         </form>
</template>

显示帖子模板

<template name="PodaciT">
   <div>
       <div class="prikaze"><p>Наслов:</p>{{наслов}}</div>  
       <div class="prikaze"><p>Опис:</p>{{опис}}</div> 
       <div class="prikaze"><p>Написао:</p>{{унео}}</div>
       <div class="prikaze"><p>Гласова:</p>{{Број_Гласова}}</div>    

     <!--  <div class="prikaze"><p>Унето:</p>{{Време_Уноса}}</div> -->
        </div>
</template>

评论集

Komentari = new Mongo.Collection('KomentariKorisnika');

// ------------------------------------------------------------------------
if (Meteor.isServer) {
   Meteor.startup(function () {

   }); 

    Meteor.publish('KomentariKorisnika', function() {
      return Komentari.find();
    });

/********************************/
};


//--------------------------------------------------------------------------

if (Meteor.isClient) {


    Meteor.subscribe('KomentariKorisnika');   


    Template.body.helpers({
      komentari: function() {
        return Komentari.find();
      }, 
});

  Template.KomentarForma.events({

    'submit .KomentarNaPredlog': function(event) { 
        event.preventDefault();
          Komentari.insert ({
             коментар : event.target.datKomentar.value,
             коментарисао: Meteor.user()._id,         
             Време_Уноса: new Date(),
             ИДпредлогаКојемКоментарПрипада: this._id,
          });      
          event.target.datKomentar.value = "";
          return false;        
     }
  });   

// -------------
}

评论输入模板

<template name="KomentarForma">

    <form class="KomentarNaPredlog">
            <input type="text" name="datKomentar" placeholder="Коментар" id="komentarčić" required >                    
            <input type="submit" value="Коментариши" id="DugmeZaUnosPredloga">
         </form>

</template>

显示 cmets 模板

    <template name="PrikazKomentara">
<div>
    <div class="prikaze"><p>Коментар:</p>{{коментар}}</div>
    <div class="prikaze"><p>Коментарисао:</p>{{коментарисао}}</div>
</div>
</template>

【问题讨论】:

  • 评论应该有自己的id和所属帖子的外来id。
  • 好的,我会很容易地让他获取他所属帖子的ID,然后如何让他就在那个帖子旁边?

标签: javascript git mongodb meteor forum


【解决方案1】:

您需要为每个帖子过滤您的“cmets”收藏。如果您对同一个集合有多个订阅,则它们的数据将合并到一个客户端集合中。

如果您发布代码的相关部分,我们可能会为您提供更多帮助。请注意,添加 GitHub URL 不算发布相关代码。

【讨论】:

  • 贴出相关部分即可。比如,你如何订阅这种数据,以及你的代码如何呈现它。两个或三个函数/模板是一个好的开始。
  • 我很难理解你的语言,而且我也不擅长使用 Blaze 模板,但我认为 komentari 应该转到 KomentarForma 的助手,并针对每个帖子进行过滤.不幸的是,我不知道如何在 Blaze 中正确地做到这一点,因为我主要使用 React。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2016-05-27
  • 1970-01-01
  • 2013-04-12
  • 2013-04-01
相关资源
最近更新 更多