相当于PHP Die():如何在服务器上停止函数的执行

时间:2015-11-09 09:25:17

标签: meteor

除了内置的accounts MDG包之外,我正在构建一个带有一些自定义身份验证的Meteor应用程序。 我希望在Meteor方法的前面调用一个函数来验证身份验证。如果身份验证失败,我想做相当于PHP的die()函数 - 返回一条消息并停止执行。

我总是可以做这样的事情:if(!checkAuth()) return "Not Authenticated"但是如果我能做checkAuth()那就好了,如果不满足正确的权限,该函数会负责停止执行。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

简单的方法是抛出一个新的Meteor.Error。如果not caught它将停止当前正在运行的函数,并且如果它从方法或订阅中抛出,它将出现在客户端。

function checkAuth(user) {
  if(!isAuthenticated(user)) {
    throw new Meteor.Error('not-authenticated', 'Users need to be authenticated to do foo')
  }
}

上面抛出的错误服务器端将出现在客户端上,其中包含原因和详细信息。它允许您根据发生的任何事情定制错误处理。如果抛出任何其他类型的错误,它将显示为“500内部服务器错误”。

请注意,此机制类似于check。您甚至可以使用自定义Match pattern

check(user, MyPatterns.authenticatedUser)