【问题标题】:How can i get POST raw body in Meteor restivus?如何在 Meteor restivus 中获得 POST 原始身体?
【发布时间】:2016-06-21 19:13:03
【问题描述】:

如何在 Meteor restivus 中获取 POST 原始正文? 尝试了一些东西,但它不起作用。 这是代码。

if(Meteor.isServer) {
    var Api = new Restivus({
        useDefaultAuth: true
    });

    Api.addRoute('test', {authRequired: false}, {
        post: {
            action: function() {
                var response;
                var readable = this.request;
                var rawBody = "";
                readable.on('data', function(chunk) {
                    rawBody += chunk;
                });
                readable.on('end', Meteor.bindEnvironment(function() {
                    //dosometing and insert into Collection
                    //make response data
                }));
                return response;
            }
        }
    });
}

继续返回响应然后readable.on('end'.. ) 所以,返回null是错误的。 如果我将返回响应移动到readable.on('end'...),也会出现同样的错误。 我想如果可以等待 POST 返回直到readable.on('end'..) 完成,它会工作,但我不知道如何。

【问题讨论】:

    标签: meteor http-post asynccallback restivus


    【解决方案1】:

    在调用readable.on('end', ..) 之前,您可以使用node-fibersFuturewait

    if(Meteor.isServer) {
        var Future = Npm.require('fibers/future');
        var Api = new Restivus({
            useDefaultAuth: true
        });
    
        Api.addRoute('test', {authRequired: false}, {
            post: {
                action: function() {
                    var response;
                    var readable = this.request;
                    var rawBody = "";
                    var future = new Future();
    
                    readable.on('data', function(chunk) {
                        rawBody += chunk;
                    });
    
                    readable.on('end', Meteor.bindEnvironment(function() {
                        //dosometing and insert into Collection
                        //make response data
                        future.return(response); //response is what you want to return
                        // you can also throw error using future.throw(err);
                    }));
    
                    return future.wait();
                }
            }
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 1970-01-01
      • 2020-05-09
      • 2016-11-22
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      相关资源
      最近更新 更多