8

我是流星和咖啡脚本的新手。我正在使用非官方 Meteor 常见问题解答中建议的文件布局。在文件集合/C.coffee 中,我有

C = new Meteor.Collection 'C'
console.log "C: #{C}"

在文件 server/main.coffee 中,我有

C.insert {test: 'test'}

当我启动流星时,我在控制台上看到:

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: Cannot call method 'insert' of undefined

4

1 回答 1

13

为了使 C 在它在 use 中定义的文件之外可见@,它编译为jsthis.window.在 js 中,这使其具有与全局范围相同的效果:

@C = new Meteor.Collection 'C'
于 2013-08-09T16:01:46.907 回答