使用客户端和服务器目录组织Meteor

时间:2013-04-13 07:39:44

标签: meteor

我开始使用Meteor,我已经从一个咖啡文件中运行了所有内容,但我想整理一下并将一些代码移动到/ 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()

1 个答案:

答案 0 :(得分: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"

<强> /client/trips.coffee

Meteor.subscribe 'trips'
Meteor.startup ->
    Template.Trips.all_trips = -> Trips.find()

<强> /server/server.coffee

Meteor.publish 'trips', -> Trips.find()

Trips.allow
    insert: -> true
    update: -> true
    remove: -> true