2016-05-03 5 views
-3

Ich machte zwei Sammlungen, eine für Beiträge und eine für Kommentare. Jetzt läuft alles gut, außer dass jeder Kommentar auf jedem Post angezeigt wird. Ich weiß nicht, wie man einen Kommentar mit "seinem" Beitrag verbindet. Ich dachte, ID von Post in seinem Kommentar zu speichern, aber ich weiß nicht, wie man diese zwei später zusammen verbindet. Hier ist der Link meiner App auf GitHub (es ist eine kleine App und es hat einen klaren Code). Vielen Dank! enter link description hereVerbinden von zwei Sammlungen in Meteor (Kommentare auf Beiträge)

Hauptsammlung für Beiträge

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;   
    } 
    }); 

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

Haupt 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> 

Beitrag einfügen Vorlage

<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> 

anzeigen Post-Vorlage

<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> 

Kommentar Sammlung

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;   
    } 
    }); 

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

Eingang Kommentar teplate

<template name="KomentarForma"> 

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

</template> 

Displa y Kommentare template

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

Der Kommentar sollte seine eigene ID und die ausländische ID des Posts haben, zu dem er gehört. – Martin

+0

Ok, ich werde ihn leicht dazu bringen, die ID des Posts zu nehmen, zu dem er gehört, um ihn später so zu machen, dass er neben dem einen Post steht? –

Antwort

1

Sie müssen für jeden Post Ihre Kommentare Sammlung filtern. Wenn Sie mehrere Abonnements für dieselbe Sammlung haben, werden ihre Daten in einer clientseitigen Sammlung zusammengeführt.

Wenn Sie die relevanten Teile Ihres Codes veröffentlichen, können wir Ihnen vielleicht mehr helfen. Bitte beachten Sie, dass das Hinzufügen einer GitHub-URL nicht als buchungsrelevanter Code zählt.

+0

Es gibt zu viel Code, um es hier zu setzen:/ –

+0

Stellen Sie einfach die relevanten Teile. Zum Beispiel, wie Sie diese Art von Daten abonnieren und wie Ihr Code sie rendert. Zwei oder drei Funktionen/Vorlagen sind ein guter Anfang. – aedm

+0

Ich tat, siehe editierte Frage, danke! –

Verwandte Themen