'How can i get POST raw body in Meteor restivus?
How can i get POST raw body in Meteor restivus? tried something, but it's not working. this is the code.
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;
}
}
});
}
it's proceed return response and then readable.on('end'.. )
so, it's error by return null.
if i moved return response into readable.on('end'...), also same error.
i think if can wait POST return until readable.on('end'..) is finished, it will be work, but i don't know how.
Solution 1:[1]
You can use node-fibers's Future to wait until readable.on('end', ..) is called.
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();
}
}
});
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Niteesh |
