2015-02-04 5 views
0

Я пытаюсь определить, почему моя глобальная переменная недоступна в моей консоли браузера. Вот мой топ-уровня метеор Javascript содержимое файла:Глобальная переменная в Meteor

 if (Meteor.isServer) { 
     Meteor.startup(function() { 

     Posts = new Mongo.Collection("posts"); 
     Carbrands = new Meteor.Collection("carbrands"); 
     Comments = new Mongo.Collection("comments"); 

     Posts.insert({post1:'post'}); 
     Carbrands.insert({post1:'post'}); 
     Comments.insert({post1:'post'}); 
     }); 
    } 

(я могу подтвердить, что сообщения, Carbrands, Комментарии определены), но в Broswer, я получаю это (сообщения не определено):

enter image description here однако, когда я добавить эту строку кода в верхней части:

Posts = null; 

    if (Meteor.isServer) { 
     Meteor.startup(function() { 

     Posts = new Mongo.Collection("posts"); 
     Carbrands = new Meteor.Collection("carbrands"); 
     Comments = new Mongo.Collection("comments"); 

     Posts.insert({post1:'post'}); 
     Carbrands.insert({post1:'post'}); 
     Comments.insert({post1:'post'}); 
     }); 
    } 

я получаю следующий вывод на консоль (сообщений равно нулю):

enter image description here

Что дает?

ответ

2

Попробуйте объявить Коллекции в папке /lib

Таким образом, они будут доступны как client/server

Как Meteor docs говорит /lib папка сво хорошее место, чтобы объявить коллекциям

Библиотека/# общий код как коллекции и коммунальные услуги

3

Код внутри Meteor.isServer работает только на сервере (а не на клиенте). Вам необходимо определить ваши коллекции за пределами этой проверки, чтобы они были открыты для обоих.

Posts = new Mongo.Collection("posts"); 

if (Meteor.isServer) { 
    // do server things. Posts will be defined here. 
} 

if (Meteor.isClient) { 
    // do client things. Posts will be defined here. 
} 

Как CodeBase расширяется за пределы одного файла, вы в конечном итоге разделив его в каталоги как this. В этом случае ваша дефиниция вашей коллекции окажется где-то вроде lib/collections/posts.js и будет автоматически отображаться как на сервере, так и на клиенте.

+2

duh Я идиот, спасибо –

Смежные вопросы