0

我曾经 orion generate model创建一个名为 Events 的模型。然后我在 Mongo DB 控制台中插入该模型。我无法从其他地方访问该模型,因为当我尝试实例化 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
            }
        });
    }
});
}

我的问题基本上归结为,如果在 Events.js 中创建了对我的 mongo 集合的引用,如何将它存储在 header.js 中的变量中?Orion 没有很好的文档集,并且某些地方也缺少流星,所以这有点不透明。

4

1 回答 1

0

tldr:从 header.js 文件中删除第一行

如果您更仔细地查看告诉您 Events 模型已经存在的回溯,您会看到它被 header.js 文件第 1 行抛出。这是因为当加载此文件时,Events 变量已经定义,因为它是 Events.js 中定义的全局变量的名称,并且在当前文件(以及 Events.js 执行的任何地方)中已经可用。

对于大多数项目,最佳实践是在客户端和服务器上都执行的文件中全局定义您的集合。然后您的所有其他文件都可以使用此变量引用集合。

于 2015-10-08T02:48:40.570 回答