我在Meteor.js中的另一个方法中运行一个方法,我想将错误返回给客户端,但我在控制台上收到此错误:
Exception in delivering result of invoking 'validarCupon':
Run Code Online (Sandbox Code Playgroud)
这是我实际调用客户端的方法:
Meteor.methods({
hacerPedido:function(){
var carrito = CarritoUsuario.findOne({idUsuario: Meteor.userId()});
var cupon = carrito.cupon;
//Texto y lógica del cupón
Meteor.call("validarCupon", cupon.codigo, function(error, result){
if(error){
throw new Meteor.Error("cupon-invalido", error.reason);
}
});
return creditoUsuario;
}
});
Run Code Online (Sandbox Code Playgroud)
我想要做的是从名为'validarCupon'的方法中获取错误,并将其传递给调用方法'hacerPedido'的客户端.
提前致谢!
您正在异步调用内部方法,这会阻止您将任何内容返回给调用者,因为在throw 之前调用return creditoUsario它的可能性很大.
但是,希望您不需要异步执行此操作,在这种情况下,您可以简单地执行以下操作:
Meteor.methods({
hacerPedido:function(){
var carrito = CarritoUsuario.findOne({idUsuario: Meteor.userId()});
var cupon = carrito.cupon;
//Texto y lógica del cupón
Meteor.call("validarCupon", cupon.codigo);
return creditoUsuario;
}
});
Run Code Online (Sandbox Code Playgroud)
因为异常泡沫起来.因此,validarCupon方法中的任何异常都将自动抛出到客户端.
如果确实需要该方法以异步方式运行,那么您需要稍微更改一下逻辑,因为一旦return发生(方法体结束),就没有更多的基础可以回传给客户端了.
另外,如果你使用上面的解决方案,我建议不要在服务器中使用方法调用,但要使其功能简单.