2013-04-13 91 views
2

我开始在流星,我已经从一个咖啡文件运行一切,但我想组织起来,并将一些代码移动到/ public和/ server。但是,当我这样做时,我的收藏是未定义的。我移动了很多代码,但集合保持未定义状态。我已经删除了自动发布和不安全的软件包。我究竟做错了什么?组织流星与客户端和服务器目录

/main.coffee

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 

/client/trips.coffee

Meteor.startup -> 
    Template.Trips.all_trips = -> Trips.find() 
+2

我建议你也尽量利用本地智能包(在包/ /)尽快。他们在控制加载顺序和(服务器/客户端)文件的位置方面非常灵活 – matb33

+0

您的意思是添加现有的软件包以在我的项目中使用或编写自己的软件包,并将它们用作应用程序逻辑的存储位置? – GijsjanB

+0

写你自己的。任何觉得它可能是可重复使用的逻辑 – matb33

回答

2

你需要一个Trips可访问到其他文件,Meteor 0.6.0 introduced variable scoping你有你的根目录中的Trips定义所以它的全球&你的client/trips.coffee不能看到它。你可以把它的全球与@

在你/main.coffee

@Trips = new Meteor.Collection "trips" 

那么这将是对其他文件(包括客户端和服务器)访问。

当你分割你的文件,进一步您应该结束了3个文件:

/main.coffee

@Trips = new Meteor.Collection "trips" 

/客户端(由服务器和客户端并加载第一个可访问) /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 
+0

请注意,这种行为将很快得到改进(与[链接器分支](https://github.com/meteor/meteor/branches)上的工作) – mquandalle

+0

这工作像一个魅力,只是在添加@之后,我不得不从Meteor.startup()中取出Template.Trips.all_trips var。日Thnx! – GijsjanB