连接流星中的两个收藏(帖子评论)

Connecting two collections in meteor (comments on posts)

本文关键字:两个 收藏 评论 流星 连接      更新时间:2023-09-26

我制作了两个集合,一个用于帖子,另一个用于评论。现在,除了每条帖子上的每条评论外,一切都很好。我不知道如何将一条评论与"他的"帖子联系起来。我想把帖子的id保存在他的评论里,但我不知道以后如何把这两者联系起来。这是我在GitHub上的应用程序链接(这是一个小应用程序,代码清晰)。谢谢在此处输入链接描述

帖子的主要集合

    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>

显示评论模板

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

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

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