2016-02-03 1 views
1

По какой-то причине мой data: function... всегда возвращается как undefined.Утюг: роутер Никогда не возвращает определенную коллекцию (версия 1.0.12)

Вот мой код сервера:

Flyers = new Mongo.Collection('flyers'); 

Meteor.publish('flyers', function() { 
    return Flyers.find({}); 
}); 

Как просто, как он получает.

Вот мой маршруты файл (который находится в директории под названием both):

Router.route('/dashboard', { 
    template: 'dashboard', 
    layoutTemplate: "dashboardLayout", 
    loadingTemplate: 'loading', 
    waitOn: function() { 
    return Meteor.subscribe('flyers'); 
    }, 
    data: function() { 
    return Flyers.find() 
    } 
}); 

только посмотреть:

enter image description here

какой-либо причине это не работает?

+6

'Flyers = новый Mongo.Collection ('flyers');' должен быть определен в папке 'lib', поэтому он доступен на стороне клиента и сервера. –

+0

@BrianShamblen, это правильный ответ, вы должны сделать ответ вместо комментария. – tsega

ответ

2

Поскольку ваша переменная Flyers определяется кодом вашего сервера, она будет доступна только на сервере. Попытка доступа к этой переменной на стороне клиента приведет к значению undefined, потому что его не существует.

Общий код, необходимый как для клиента, так и для сервера, должен быть определен в папке lib, чтобы сделать его доступным в обоих местах.

С другой стороны, причина в том, что в некоторых случаях вы можете захотеть, чтобы коллекции были доступны только на клиенте или только на сервере, но не на обоих.