2016-03-08 3 views
1

Как я могу получить POST raw body в Meteor restivus? что-то пробовал, но он не работает. это код.Как я могу получить POST сырое тело в Meteor restivus?

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'..) так, это ошибка Ответным нуль. если я переместил ответ возврата в readable.on('end'...), также такую ​​же ошибку. Я думаю, что если может подождать POST, верните до тех пор, пока не закончится readable.on('end'..), это будет работа, но я не знаю, как это сделать.

ответ

0

node-fibersFuture до wait до 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

спасибо за помощь ур! ~ :) –

Смежные вопросы