javascript - 当 check() 抛出 Match.Error 时如何向客户端抛出错误消息?

标签 javascript error-handling exception meteor

我正在发布 Products 集合中的一些文档,并使用 check()确保传递给它的选项是有效的。如果客户端传递无效选项,我希望在控制台上显示自定义的错误消息。

我正在使用audit-argument-checks包以确保我检查了所有方法和发布函数。

在客户端上,我传递了一个无效选项(reverse 应该是一个 bool 值),但在客户端控制台和服务器日志上都没有观察到错误。

// Server
Meteor.publish('products', function (opts) {
    try {
        check(opts, {
            sort: Match.Optional(String),
            reverse: Match.Optional(Boolean),
            start: Match.Optional(Number),
            limit: Match.Optional(Number),
            userId: Match.Optional(String)
        });
    } catch (err) {
        this.error(new Meteor.Error('invalid-opts', "Please check your options are valid")); // Throws back an error saying invalid options
    }
    // Some more code
});

// Client
Template.home.helpers({
    productListings: function () {
        Meteor.subscribe('products', {sort: 'created', reverse: 'asdasd'});
        return Products.find({});
    }
});

我尝试过使用Match.test()代替 check(),但这不满足 audit-argument-checks 包,我想用它来确保我不会错过任何检查。

check() 抛出 Match.Error 时,如何向客户端抛出错误消息?

最佳答案

我看起来您只是未能通过客户端上的回调检查错误。请参阅onError callback of Meteor.subscribe() .

我已完成您的订阅,如下in a Meteorpad然后它会按照预期发送给客户端进行处理。

Meteor.subscribe('products',{sort: 'created', reverse: 'asdasd'},
  {onError: function( err ) {throw err;}}
);

关于javascript - 当 check() 抛出 Match.Error 时如何向客户端抛出错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28007495/

相关文章:

javascript - Universal Analytics 中的事件未正确记录事件

php - 使用 Javascript 错误事件监听器检测失败与 PHP 在响应文本中返回 1

python - 我应该为不存在的文件参数引发 ValueError 或 OSError 吗?

xml - 无效的 XMLDoc - 有多个根元素。 9号线,位置2

javascript - Facebook Graph API 搜索 next_page 返回空数据对象

javascript - 添加jquery来 react 组件并更新状态

javascript - 在Safari/Chrome中,如何在ready()和focus()上触发函数A,在blur()上触发函数B?

mysql - SQL 错误 1292 尝试更新行字段

当没有参数给出错误时,Python类自变量作为默认值

java - 无论我使用哪个 JEE 异常(exception),Postman 都会返回状态 500