2016-03-08 51 views
1

我怎样才能在流星restivus得到POST原始身体? 尝试了一些东西,但它不起作用。 这是代码。我怎样才能在流星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'...),也是同样的错误。 我认为如果可以等待邮政回报,直到readable.on('end'..)完成,这将是工作,但我不知道如何。

回答

0

您可以使用node-fibersFuturewait,直到调用readable.on('end', ..)

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(); 
      } 
     } 
    }); 
} 
+0

谢谢你的帮助〜:) –