Подключение сгенерированной Orion модели к приложению Meteor

Я использовал orion generate model создать модель под названием События. Затем я вставил эту модель в консоль БД Mongo. Я не могу получить доступ к этой модели из другого места, потому что, когда я пытаюсь создать экземпляр объекта Collection, мне говорят, что модель с именем Events уже существует, что она и делает, потому что мой файл Events.js выглядит следующим образом:

Events = new Mongo.Collection('Events');

Events.attachSchema(
new SimpleSchema({
    name: {
        type: String
    },
    location: {
        type: String
    },
    dateTime: {
        type: Date
    },
    description: {
        type: String
    },
    eventType: {
        type: String
    },
    createdAt: {
        type: Date,
        denyUpdate: true
    }
})
);

Мой файл header.js выглядит следующим образом:

var Events = new Meteor.Collection('Events');

if (Meteor.isClient) {
// This code only runs on the client


Template.body.helpers({
    events: function() {
        var evs = Events.find({}, {fields: {'name':1}});
        return Events.find({}, {
            sort: {
                createdAt: -1
            }
        });
    }
});
}

Мой вопрос сводится к тому, как сохранить ссылку на мою коллекцию монго в переменной в header.js, если она создается в Events.js? У Ориона нет отличного набора документации, а метеоров не хватает местами, так что это немного непрозрачно.

1 ответ

tldr: удалите первую строку из вашего файла header.js

Если вы посмотрите внимательнее на трассировку, которая сообщает, что модель Events уже существует, вы увидите, что она генерируется файлом header.js, строка 1. Это происходит потому, что при загрузке этого файла переменная Events уже определена., так как это имя глобальной переменной, определенной в Events.js, и уже доступно в этом текущем файле (и везде, где был выполнен Events.js).

Для большинства проектов лучше всего определять свои коллекции глобально в файле, который выполняется как на клиенте, так и на сервере. Тогда все остальные ваши файлы могут ссылаться на коллекцию, используя эту переменную.

Другие вопросы по тегам