Meteor:根据允许和拒绝规则自定义错误消息

时间:2013-07-10 13:12:54

标签: meteor

我希望通过Meteor中的允许和拒绝规则来标准化错误消息。我不想在客户端上定义回调中的错误,而是希望服务器使用正确的错误消息进行响应,这样我只需要定义一次。来自关于允许/拒绝的文档:

  

如果他们认为应允许操作,则函数应返回true。否则他们应该返回false,或者根本不返回任何内容(未定义)。

但是,如果我在拒绝功能中抛出错误,则错误会被发送给用户。即否认:

throw new Meteor.Error(404, "Not the owner");

并在客户端:

SomeCollection.remove(someId, function(err, result) {
  console.log(err.message); // Outputs "Not the owner"
});

似乎是一种在整个网站上显示相同错误的简单方法。这是一种有效的方法,即使文档明确指出我们应该在拒绝/允许中返回true / false吗?

2 个答案:

答案 0 :(得分:3)

从这部分文档:

http://docs.meteor.com/#meteor_error

前三句:

If you want to return an error from a method, throw an exception. Methods can throw any kind of exception. But Meteor.Error is the only kind of error that a server will send to the client. 

听起来像你做得对。我不得不怀疑,你的用户界面是否永远不允许用户出现这样的消息?除了“哎呀,你不应该被允许这样做。恢复你的行动。”如果出现意外允许未经授权的查询的错误。

答案 1 :(得分:1)

您不能在Meteor允许/拒绝回调中抛出异常。这样做将打破Meteor将检查的回调链,以确保文档的操作通过。

示例:

Meteor将通过AT LEAST ONE检查允许规则,只要1返回true,操作就会成功。

允许1 - >允许2 - >允许3

Meteor还会检查所有拒绝规则,只要1返回true,操作就会失败

拒绝1

如果在Allow 1上抛出异常而不是返回false(如果不允许用户执行某些操作则应该如此),Meteor永远不会检查Allow 2和3,即使它们将返回true。这样就打破了链条。