2015-04-12 4 views
0

я получил очень смущен для одного использования:nodejs выразить свойство профиля в запросе

В файле маршрута:

app.param('userId', users.load); 

и функция users.load:

exports.load = function (req, res, next, id) { 
    var options = { 
     criteria: { _id : id } 
    }; 
    User.load(options, function (err, user) { 
     if (err) return next(err); 
     if (!user) return next(new Error('Failed to load User ' + id)); 
     req.profile = user; 
     next(); 
    }); 
}; 

Здесь, маршрут должен иметь ответ userId, но почему автор использует req.profile здесь. profile не является собственностью.

Любой может помочь?

Спасибо.

ответ

1

Что делает код заключается в следующем: для маршрутов, которые имеют параметр userId (то есть, маршруты, которые выглядят примерно так: /user/:userId), Экспресс будет вызывать функцию load()перед тем называется обработчик маршрута.

Функция загрузки загружает пользовательский профиль, принадлежащий userId из базы данных, и добавляет его в req как вновь созданное свойство req.profile.

.profile имя свойства произвольно по имени автора и демонстрирует тот факт, что это вполне допустимо, чтобы добавить свойства к req (или res, по этому вопросу, но конвенция добавить эти свойства req).

В обработчике маршрута вы можете использовать req.profile. Это в основном способ распространения данных из промежуточного программного обеспечения и реализации app.param() в другие части обработки маршрута.

Смежные вопросы