在meteor 0.6.4.1/coffeescript中,可变可见性是如何工作的?

在meteor 0.6.4.1/coffeescript中,可变可见性是如何工作的?,coffeescript,meteor,Coffeescript,Meteor,我对《流星》和《咖啡脚本》还不熟悉。我正在使用非官方流星常见问题解答中建议的文件布局。在文件集合/C.coffee中,我有 C = new Meteor.Collection 'C' console.log "C: #{C}" C.insert {test: 'test'} 在文件服务器/main.coffee中,我有 C = new Meteor.Collection 'C' console.log "C: #{C}" C.insert {test: 'test'} 当我启动meteo

我对《流星》和《咖啡脚本》还不熟悉。我正在使用非官方流星常见问题解答中建议的文件布局。在文件集合/C.coffee中,我有

C = new Meteor.Collection 'C'
console.log "C: #{C}"
C.insert {test: 'test'}
在文件服务器/main.coffee中,我有

C = new Meteor.Collection 'C'
console.log "C: #{C}"
C.insert {test: 'test'}
当我启动meteor时,我在控制台上看到:

C: [object Object]
ReferenceError: C is not defined
    at app/server/main.coffee.js:5:1
    at /home/xxx/yyy/.meteor/local/build/server/server.js:298:12
如何使C在collections/C.coffee之外的文件中可用

更新:将@添加到C解决了顶层的问题。但是,它仍然无法满足以下条件:

   Meteor.methods
        test: (statement) ->
             @C.insert {test: 'test'}

它失败,出现错误
TypeError:无法调用未定义的方法'insert',使C在使用中定义的文件之外可见
@
,该文件编译为
this.
窗口。
在js中,这使其与全局作用域具有相同的效果:

@C = new Meteor.Collection 'C'

你必须在汉克斯面前使用@,苏比奥。对我更新的示例有什么建议吗?您只需要在设置全局变量时使用@/this。明白了。这解决了我的问题。谢谢。我试过一次,但失败了,所以我认为这是错误的。它现在在顶层运行良好。但我也尝试在Meteor.methods调用中使用C。是否有一个等价于窗口。在服务器端?在服务器端,我认为它可以做到这一点。
相反,因为服务器上没有窗口,请查看我更新的示例。@test()的内部指向一些不同的东西。我认为您仅在声明它时使用
@
,但在获取其值时通常使用它。在方法的上下文中,我认为
@
变成了
这个
,因为该方法的上下文在服务器端
@
等于顶级上下文的
全局
。但是您不需要使用
global.C
来访问它;您只需执行
C