我的Meteor项目的服务器/服务器目录中有一个名为authServices.coffee的文件。它具有以下函数定义,后跟Meteor.methods
调用:
isAuthorized = () ->
# note that at this point there is ever to be but one authorized user
authorized = Assets.getText('authorizedUsers').trim()
this.userId.trim() is authorized
这不起作用 - 也就是说,调用Meteor.call 'getKey'
会返回undefined
Meteor.methods(
isAuthorized : isAuthorized
getKey : () ->
if isAuthorized()
Assets.getText('Key')
)
但如果我在上面isAuthorized
中内联getKey
,它会返回true
(给定正确的输入)
我猜这是this
对这些对象的行为的函数,但是无法完全掌握它。
答案 0 :(得分:1)
函数isAuthorized
和方法getKey
具有不同的上下文。最简单的解决方案就是如此实现getKey
:
getKey: ->
if Meteor.call 'isAuthorized'
Assets.getText 'Key'
或者,您可以手动使用call
或apply
来传递this
,也可以将@userId
作为参数传递给isAuthorized
函数。
样式点:使用CS时,如果函数没有参数,则不需要空的parens。
答案 1 :(得分:0)
这会是一个选择吗?
isAuthorized = (userId) ->
# note that at this point there is ever to be but one authorized user
authorized = Assets.getText('authorizedUsers').trim()
userId.trim() is authorized
Meteor.methods(
isAuthorized : () ->
isAuthorized(this.userId)
getKey : () ->
if isAuthorized(this.userId)
Assets.getText('Key')
)