如何在 check() 抛出 Match.Error 时向客户端抛出错误消息?
How to throw an error message to the client when check() throws an Match.Error?
我正在发布 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
包,我想用它来确保我不错过任何支票。
当 check()
抛出 Match.Error
时,如何向客户端抛出错误消息?
看来您只是未能通过客户端回调来检查错误。见 onError
callback of Meteor.subscribe()
.
我已经按照下面的方式完成了您的订阅in a Meteorpad,它会按预期发送给客户进行处理。
Meteor.subscribe('products',{sort: 'created', reverse: 'asdasd'},
{onError: function( err ) {throw err;}}
);
我正在发布 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
包,我想用它来确保我不错过任何支票。
当 check()
抛出 Match.Error
时,如何向客户端抛出错误消息?
看来您只是未能通过客户端回调来检查错误。见 onError
callback of Meteor.subscribe()
.
我已经按照下面的方式完成了您的订阅in a Meteorpad,它会按预期发送给客户进行处理。
Meteor.subscribe('products',{sort: 'created', reverse: 'asdasd'},
{onError: function( err ) {throw err;}}
);