Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 请求中的nodejs express配置文件属性_Node.js_Express - Fatal编程技术网

Node.js 请求中的nodejs express配置文件属性

Node.js 请求中的nodejs express配置文件属性,node.js,express,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 n

我对一个用法感到非常困惑:

在路由文件中:

  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();
    });
};
在这里,路由应该有用户ID来响应,但是作者为什么在这里使用
req.profile
<代码>配置文件不是属性

有人能帮忙吗


谢谢。

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

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

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

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