Могу ли я получить заголовки ответов в Loopback после удаленного хука?

У меня есть модель Loopback, в которой я регистрирую запросы к сайту boss.io, используя хук afterRemote. http://docs.strongloop.com/display/public/LB/Remote+hooks#Remotehooks-ctx.result

Я также использую пакет времени ответа, чтобы добавить заголовок времени ответа к ответу. https://github.com/expressjs/времяответа

Это работает нормально, но я не могу понять, как получить доступ к заголовку X-Response-Time в ответе, чтобы зарегистрировать его в Keen.io.

Могу ли я получить доступ к заголовкам ответов любым способом ниже?

module.exports = function(Studio) {
    var isStatic = true;
    var isNotStatic = false;
    Studio.disableRemoteMethod('deleteById', isStatic); // DELETE /Studios/{id}
    Studio.disableRemoteMethod('create', isStatic); // POST /Studios
    Studio.disableRemoteMethod('upsert', isStatic); // PUT /Studios
    Studio.disableRemoteMethod('updateAll', isStatic); // POST /Studios/update
    Studio.disableRemoteMethod('updateAttributes', isNotStatic); // PUT /Studios/{id}
    Studio.disableRemoteMethod('__create__ListenNps', isNotStatic);
    Studio.disableRemoteMethod('__delete__ListenNps', isNotStatic);
    Studio.disableRemoteMethod('__destroyById__ListenNps', isNotStatic);
    Studio.disableRemoteMethod('__updateById__ListenNps', isNotStatic);

    Studio.afterRemote('*', function(ctx, affectedModelInstance, next) {
        var Keen = require('keen-js');

        var client = new Keen({
            projectId: "myid",
            writeKey: "mykey"
        });

        var queryEvent = {
            ip: ctx.req.ip,
            baseUrl: ctx.req.baseUrl,
            url: ctx.req.url,
            route: ctx.req.route,
            query: ctx.req.query,
            method: ctx.methodString,
            // response: ctx.result.???, What can I do here to get to the response headers? Specifically X-Response-Time
            keen: {
                timestamp: new Date().toISOString()
            }
        };

        client.addEvent("queries", queryEvent, function(err, res) {
            if (err) {
                console.log(err)
            } else {
                console.log(res)
            }
        });
        next();
    });
};

person duffn    schedule 07.03.2015    source источник


Ответы (1)


Попробуйте использовать ctx.res.getHeader('X-Response-Time') метод

or

прослушайте res.on('finish') событие.

person IvanZh    schedule 13.03.2015
comment
Спасибо за ответ, но я не могу заставить это работать в этом случае. Я не уверен, что смогу добраться до заголовков в методе afterRemote. - person duffn; 13.03.2015
comment
Да, я пропустил, что заголовки могут быть еще не определены. Итак, я завершил ответ! - person IvanZh; 13.03.2015