使用客户端和服务器目录组织Meteor
我从Meteor开始,我已经从一个咖啡文件中运行了所有东西,但是我想组织起来,并将一些代码移动到/public和/server。但是,当我这样做时,我的集合是未定义的。我已经移动了很多代码,但是集合仍然没有定义。我已经删除了自动发布和不安全的包。我做错了什么 /咖啡使用客户端和服务器目录组织Meteor,meteor,Meteor,我从Meteor开始,我已经从一个咖啡文件中运行了所有东西,但是我想组织起来,并将一些代码移动到/public和/server。但是,当我这样做时,我的集合是未定义的。我已经移动了很多代码,但是集合仍然没有定义。我已经删除了自动发布和不安全的包。我做错了什么 /咖啡 Trips = new Meteor.Collection "trips" if Meteor.isClient Meteor.subscribe 'trips' if Meteor.isServer Meteo
Trips = new Meteor.Collection "trips"
if Meteor.isClient
Meteor.subscribe 'trips'
if Meteor.isServer
Meteor.publish 'trips', -> Trips.find()
Trips.allow
insert: -> true
update: -> true
remove: -> true
/客户/旅行/咖啡
Meteor.startup ->
Template.Trips.all_trips = -> Trips.find()
您需要一个
Trips
才能访问其他文件,您在根目录中定义了一个Trips
,因此它不是全局的&您的客户端/Trips。coffee
看不到它。您可以使用@
将其设置为全局:
在您的/main.coffee中
@Trips = new Meteor.Collection "trips"
因此,其他文件(客户端和服务器)也可以访问该文件
当您进一步拆分文件时,您将得到3个文件:
/main.coffee(可由服务器和客户端访问并首先加载)
/client/trips.coffee
Meteor.subscribe 'trips'
Meteor.startup ->
Template.Trips.all_trips = -> Trips.find()
Meteor.publish 'trips', -> Trips.find()
Trips.allow
insert: -> true
update: -> true
remove: -> true
/server/server.coffee
Meteor.subscribe 'trips'
Meteor.startup ->
Template.Trips.all_trips = -> Trips.find()
Meteor.publish 'trips', -> Trips.find()
Trips.allow
insert: -> true
update: -> true
remove: -> true
我建议您也尽快利用本地智能软件包(在packages/下)。它们在控制加载顺序和位置(服务器/客户端)文件方面非常灵活。你是说添加现有包以在我的项目中使用,还是写我自己的包并将其用作应用程序逻辑的存储位置?写你自己的包。任何感觉它可以被重用的逻辑注意,这种行为很快就会得到改进(随着的工作),这就像一个符咒,只是在添加@之后,我不得不将Template.Trips.all_Trips var从Meteor.startup()中取出。Thnx!