nodejs在请求中表达profile属性

时间:2015-04-12 05:56:49

标签: node.js express

我对一种用法非常困惑:

在路线档案中:

  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.profileprofile不是财产。

任何人都可以提供帮助吗?

感谢。

1 个答案:

答案 0 :(得分:1)

代码的作用是:对于具有userId参数的路由(即类似于此的路由:/user/:userId),Express将调用load()函数< em>在之前调用路由处理程序。

load函数从数据库加载属于userId的用户配置文件,并将其作为新创建的属性req添加到req.profile

.profile属性名称由作者任意命名,并演示了向req(或res添加属性完全有效的事实,但惯例是将这些属性添加到req)。

在路由处理程序中,您可以使用req.profile。它基本上是一种将数据从中间件和app.param()实现传播到路由处理的其他部分的方式。