我正在发布Products
集合中的一些文档,并使用check()
确保传递给它的选项有效。如果客户端传入无效选项,我希望在控制台上显示自定义错误消息。
我正在使用audit-argument-checks
包来确保检查所有方法并发布函数。
在客户端上,我传入了一个无效选项(reverse
应该是一个布尔值),但在客户端控制台和服务器日志中都没有发现错误。
// 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
套餐,我想用它来确保我不会{39} ; t错过任何检查。
当check()
抛出Match.Error
时,如何向客户端抛出错误消息?
答案 0 :(得分:2)
我看起来你只是没有通过客户端上的回调来检查错误。请参阅onError
callback of Meteor.subscribe()
。
我已按照in a Meteorpad进行了订阅,并按照预期进入客户端进行处理。
Meteor.subscribe('products',{sort: 'created', reverse: 'asdasd'},
{onError: function( err ) {throw err;}}
);