如何检索Future从服务器发送到客户端的错误消息?

时间:2015-03-07 22:22:47

标签: meteor

在我的服务器内部,我检查数据库中的一些数据,并在它无效时抛出错误。我喜欢它:

//SERVER CODE:    
    Meteor.methods({

                send: function (prefix, number, content) {
                    Future = Npm.require('fibers/future');
                    var future = new Future();

                    //do some validation

                    myReference.doSomething({
                        number: number,
                        content: content
                    }, function(error) {
                        if(error) {
                            future.throw("Cannot send at this time.");
                        } else {
                            future.return("SUCCESS");
                        }
                    });

                    return future.wait();
                } 
   });

客户端中,我想收到消息"此时无法发送。"在future.throw("Cannot send at this time.");内。希望我能在警报中显示它。我该怎么做?

目前,这就是我正在尝试的内容,并且我不断收到一些未定义的错误。

//CLIENT CODE    
Meteor.call("send", prefix, number, content, function(err, result) {
                if(err) {
                    console.log(err);
                    alert(err);
                } else {
                    console.log("SUCCESSFULLY SENT. ", result);
                    }

                });

这是我在尝试收到错误消息时遇到的错误:

    errorClass: Internal server error [500] 
{
error: 500, 
reason: "Internal server error", 
details: undefined, message: "Internal server error [500]", 
errorType: "Meteor.Error"…}
details: undefined
error: 500
errorType: "Meteor.Error"
message: "Internal server error [500]"reason: 
"Internal server error"stack: (...)get 
stack: function () { [native code] }set stack: 
function () { [native code] }__proto__: Middle

如何收到我将来抛出的错误消息?

1 个答案:

答案 0 :(得分:0)

使用它:return future.throw(new Meteor.Error(400, 'ololo'))

future.throw期望一个Meteor.Error实例,其中包含错误消息本身以及另外的http响应代码。因此400Bad Request响应代码,ololo是错误消息。

return在这里实际上并不是必需的,但我每次都这样做只是为了确保我在失败后不会调用任何代码。