如何从Meteor.js中的方法内部的方法返回错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Meteor.js中的方法内部的方法返回错误相关的知识,希望对你有一定的参考价值。
我正在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
很可能被称为before] throw,因此您可以避免将任何东西都扔回到调用方。
不过希望您不必异步执行此操作,在这种情况下,您可以简单地执行:
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
(方法主体结束),就没有更多的基础可以与客户端进行通信了。
此外,如果您采用上述解决方案,我建议即使在服务器内也不使用方法调用,而应使其简单易用。
另一答案
在documentation的流星[C0]中,它说在服务器端,您不需要回调,并且流星调用将是同步的。
以上是关于如何从Meteor.js中的方法内部的方法返回错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 javascript (meteor.js) 中操作返回的 mongo 集合/游标?
使用 SimpleSchema 处理 Meteor.js 中的错误