Можно ли добавлять данные в объект ответа в модуле промежуточного слоя в Express.js?

Вот базовая настройка. Я пытаюсь создать простой компонент промежуточного программного обеспечения, который позволил бы мне легко передавать данные с моего маршрута непосредственно на мой javascript на стороне клиента. (Очень похож на Гон драгоценный камень из рубина ). Я делаю это с помощью модуля, который выглядит так:

    module.exports = function(){
    return function(req,res,next){
        var app = req.app;
        if(typeof(app) == 'undefined'){
            var err = new Error("The JShare module requires express");
            next(err);
            return;
        }
        res.jshare = {};
        app.dynamicHelpers({
            includeJShare: function(req,res){
                if(typeof(res.jshare) === 'undefined'){
                    return "";
                }
                return function(){
                    return '';
                } 
            }
        });
        next();
    };
}

Тогда на моем маршруте я могу сделать это:

exports.index = function(req, res){
  res.jshare.person = {firstName : "Alex"};
  res.render('index', { title: 'Express' })
};

Наконец, в layout.jade:

!{includeJShare()}

Что это делает, так это выводит строку javascript на клиенте, которая создает точный объект JSON, который был создан на стороне сервера.

Вот вопрос; все работает, как и ожидалось, но, будучи новичком в Express и Node.js в целом, мне было просто любопытно, нормально ли прикреплять свойства к объекту ответа, или что-то не так с этим, что я просто пропускаю? По какой-то причине он не проходит мой "тест на запах", но я не знаю, почему.....

15
задан BFree 5 July 2012 в 03:04
поделиться