我使用orion generate model创建了一个名为Events的模型。然后,我将其插入到Mongo DB控制台中的模型中。我无法从其他地方访问该模型,因为当我尝试实例化一个集合对象时,我被告知一个名为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
}
});
}
});
}我的问题基本上可以归结为,如果我的mongo集合是在Events.js中创建的,我如何将对它的引用存储在header.js的变量中?Orion没有很好的文档集,meteors也缺少一些地方,所以这有点不透明。
发布于 2015-10-08 10:48:41
tldr:从header.js文件中删除第一行
如果您更仔细地查看回溯,它告诉您事件模型已经存在,您将看到它正被header.js文件的第1行抛出。这是因为当加载此文件时,已经定义了Events变量,因为它是在Events.js中定义的全局变量的名称,并且已经在当前文件中(以及Events.js执行的所有位置)中可用。
对于大多数项目,最佳实践是在一个同时在客户端和服务器上执行的文件中全局定义您的集合。然后,您的所有其他文件都可以使用此变量引用集合。
https://stackoverflow.com/questions/33004836
复制相似问题