如何在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'..)
完成,它会起作用,但我不知道如何。
答案 0 :(得分:0)
您可以使用node-fibers的Future
至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();
}
}
});
}