Метеор паб / суб выпуски
Это ниже мой код коллекции
Competitions = new Mongo.Collection("competitions");
var CompetitionsSchema = new SimpleSchema({
year: {
type: String
},
division: {
type : String,
allowedValues: ['Elite', '1st','2nd','3rd','4th','Intro']
},
teams:{
type : [TeamSchema],
allowedValues: (function () {
return Teams.find().fetch().map(function (doc) {
return doc.name;
});
}()) //here we wrap the function as expression and invoke it
}
});
В функции позволенных значений
Teams.find пуст.
В роутере я подписываюсь на публикацию следующим образом
this.route('competitions', {
path: '/admin/competitions',
layoutTemplate: 'adminLayout',
waitOn: function () {
return [
Meteor.subscribe('teams')
];
}
});
Это моя функция публикации
Meteor.publish('teams', function() {
return Teams.find({},{sort: {
points: -1,
netRunRate : -1
}});
});
Должен ли я сделать подписку где-нибудь еще?
1 ответ
Решение
Ваша проблема в этом куске кода:
allowedValues: (function () {
return Teams.find().fetch().map(function (doc) {
return doc.name;
});
}()) //here we wrap the function as expression and invoke it
Это вызывается, когда страница загружается. На этом этапе Teams
коллекция будет по-прежнему пустой на стороне клиента. Вам нужно подождать, пока данные не будут готовы. Так как вы используете waitOn
в iron-router достаточно просто переместить этот код в onRendered
Перезвоните.