我在 Meteor.js 中的另一个方法中运行一个方法,我想将错误返回给客户端,但我在控制台上收到此错误:
Exception in delivering result of invoking 'validarCupon':
这是我实际调用客户端的方法:
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;
}
});
我想做的是从名为“validarCupon”的方法中获取错误并将其传递给调用方法“hacerPedido”的客户端。
最佳答案
您正在异步调用内部方法,这会阻止您将任何东西返回给调用者,因为 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;
}
});
因为异常会冒泡。所以validarCupon方法中的任何异常都会自动抛给客户端。
如果您确实需要该方法异步运行,那么您需要稍微更改一下逻辑,因为一旦 return
发生(方法主体结束),就没有更多的通信基础返回给客户端。
此外,如果您采用上述解决方案,我建议您甚至不要在服务器内使用方法调用,而是使其成为简单的函数。
关于javascript - 如何从 Meteor.js 中方法内部的方法返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35192327/