мой lib/collections.js загружается, но не вызывается в метеоре

Я пробую этот учебник http://net.tutsplus.com/tutorials/javascript-ajax/prototyping-with-meteor/

это моя структура

 chat
 |_client
 |  |_chat.html
 |  |_chat.js
 |   
 |_lib
    |_collections.js

в collections.js я делаю

var Rooms = новый Meteor.Collection('комнаты');

if (Meteor.isServer && Rooms.find().count() == 0) {
  var rooms = [
    {name: 'Meteor Talk', members: 3, last_activity: '1 minute ago',
      messages: [
        {author: 'Tom', text: 'Hi there Sacha!'},
        {author: 'Sacha', text: 'Hey Tom, how are you?'},
        {author: 'Tom', text: 'Good thanks!'},
      ]},
    {name: 'Meteor Development', members: 2, last_activity: '5 minutes ago'},
    {name: 'Meteor Core', members: 0, last_activity: '3 days ago'}
  ]

  _.each(rooms, function(room) {
    Rooms.insert(room);
  });
}

И в чате.js

Template.rooms.helpers({
  rooms: function() { return Rooms.find(); }
});

Я получаю сообщение об ошибке Rooms is not defined, если я отлаживаю, я вижу, что папка lib/collections.js загружается, но не вызывается.

Я что-то упустил в своем коде или конфигурации?

Спасибо


person Dany Y    schedule 17.05.2013    source источник


Ответы (1)


Будьте осторожны при использовании var. В Meteor переменные связаны с файлом, поэтому, когда вы определяете var Rooms = new Meteor.Collection('rooms');, он доступен только в lib/collections.js. Это помогает содержать код в чистоте и порядке.

Чтобы сделать его доступным повсюду с глобальной областью видимости переменных, удалите var:

Rooms = new Meteor.Collection('rooms');
person Tarang    schedule 17.05.2013
comment
Вау, это было! это то, что должно было быть где-то упомянуто! Спасибо - person Dany Y; 18.05.2013