如何从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中的方法内部的方法返回错误的主要内容,如果未能解决你的问题,请参考以下文章

允许用户从公用文件夹 Meteor.js 下载文件

在 Meteor JS 中使用 require 时出错

如何在 javascript (meteor.js) 中操作返回的 mongo 集合/游标?

使用 SimpleSchema 处理 Meteor.js 中的错误

日期查询之间的 Meteor.js / MongoDB 不返回数据

meteor.js 和 npm 需要 fs