2013-04-13 87 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