我使用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中创建了一个变量,我如何在header.js中的变量中存储我的mongo集合的引用?猎户座没有很好的文档集,而流星也没有,所以这有点不透明。
答案 0 :(得分:0)
tldr:从header.js文件中删除第一行
如果你仔细查看告诉你事件模型已经存在的回溯,你会看到它被header.js文件第1行抛出。那是因为当加载这个文件时,事件变量已定义,因为它是Events.js中定义的全局变量的名称,并且已在此当前文件中可用(以及Events.js已执行的所有位置)。
对于大多数项目,最佳做法是在客户端和服务器上执行的文件中全局定义集合。然后,所有其他文件都可以使用此变量引用该集合。