2

我开始使用 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()
4

1 回答 1

2

您需要 aTrips才能访问其他文件,Meteor 0.6.0 引入了您在根目录中定义的变量范围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
于 2013-04-13T08:00:09.833 回答