javascript - 如何从 Meteor.js 中方法内部的方法返回错误

标签 javascript meteor

我在 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/

相关文章:

javascript - 服务器无法使用从 Electron 应用程序发送的应用程序/xml 请求

javascript - 以父子层次结构显示 JSON 数据

javascript - Meteor:排队任务中出现异常:错误:无法在 'removeChild' 上执行 'Node' :要删除的 Node 不是此 Node 的子 Node

javascript - meteor (0.9.0.1) : Issue assigning admin role using a roles package

javascript - 在 chrome 中添加多个断点的快捷方式?

javascript - 如何将路由参数值传递给 react 中的 header 组件和页面内容组件?

mongodb - 访问 Meteor 中的数据库对象

angularjs - Meteor CollectionFS - 在服务器上上传图像

Javascript window.location 返回两个不同的值?

meteor 流路由器放置/安全