Od dłuższego czasu walę głową w ścianę i zakładam, że brakuje mi tutaj czegoś prostego.Klient subskrybuj nie otrzymujący danych z serwera Meteor opublikował
biegnę to na moim serwerze Meteor:
// --- Collections ---
Projects = new Meteor.Collection('projects');
Team = new Meteor.Collection('team');
// --- Only publish user data for users on my team ---
Meteor.publish('team', function() {
var team = Meteor.users.findOne({_id: this.userId}).profile._team;
console.log(Meteor.users.find({'profile._team': team}, {fields: {_id: 1, profile: 1}}).fetch());
return Meteor.users.find({'profile._team': team}, {fields: {_id: 1, profile: 1}});
});
ta znajdzie wszystkich użytkowników, którzy są na tej samej „drużynie” uruchamiając kwerendę na wszystkich dokumentach użytkowników, którzy mają ten sam identyfikator w profile._team
Właściwość jako aktualnie zalogowany użytkownik. Zobaczysz console.log(...);
w funkcji publikowania (w wierszu przed instrukcją return) i poprawnie zaloguje dokumenty, których oczekuję w moim terminalu.
Teraz biegnę to na moim kliencie:
// --- Data ---
Meteor.subscribe('team');
Team = new Meteor.Collection('team');
Template.team.team = function() {
console.log(Team.findOne());
return Team.find();
};
Jednak console.log(Team.findOne())
zawsze loguje niezdefiniowany, Team.find()
zawsze zwraca pustą tablicę. Co robię niewłaściwie, co powstrzymuje moje dokumenty przed dotarciem do klienta?
AKTUALIZACJA: Oto kod szablonu.
<body>
{{> team}}
</body>
<template name="team">
<p>TEAM TEMPLATE WORKS</p>
{{#each team}}
<p>TEAM EACH WORKS</p>
<div class="teamMember">
{{profile.firstName}} {{profile.lastName}}
</div>
{{/each}}
</template>
„zespół działania poszczególnych” nie jest wyświetlana w znaczniku {{#each}}
, ale „zespół WZÓR działa” powoduje, zgodnie z oczekiwaniami, jeśli jest umieszczony przed znacznikiem {{#each}}
.
dziwne. Opublikuj swój kod szablonu. – Xyand
Dodano kod szablonu. –
Pomaga zrozumieć, że klient zazwyczaj musi używać tej samej nazwy kolekcji co serwer, ale nazwa subskrypcji może być zupełnie inna i musi pasować do nazwy publikacji (* nie * nazwa kolekcji na serwerze). Zobacz szczegółowe informacje [jak Meteor zbiórki, subskrypcje i publikacje prac] (http://stackoverflow.com/a/21853298/1269037). –