Как я могу получить POST сырое тело в 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'..) закончено, это будет работа, но я не знаю как.

1 ответ

Вы можете использовать ноды-волокна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();
            }
        }
    });
}
Другие вопросы по тегам