Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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_Http_Express_Request - Fatal编程技术网

Node.js Nodejs,Express在开始时获取请求参数

Node.js Nodejs,Express在开始时获取请求参数,node.js,http,express,request,Node.js,Http,Express,Request,我正在构建一个web应用程序,其中大多数对服务器的请求都需要进行标识符数据对象映射。我想覆盖这样处理请求的任何地方,但我不想将映射到每个请求,有更好的方法吗 var express = require("express"); var app = express(); function mapping(req,res,next){ console.log(req.params); // actual data fetch from server depending on re

我正在构建一个web应用程序,其中大多数对服务器的请求都需要进行标识符数据对象映射。我想覆盖这样处理请求的任何地方,但我不想将
映射到每个请求,有更好的方法吗

var express = require("express");
var app = express();


function mapping(req,res,next){
    console.log(req.params); 
    // actual data fetch from server depending on req.params
    // Example, if req.params.userid defined -> fetch userid from db and place it
    if ( req.params.userid){
        req.user = {
            name: "Mustafa",
            title: "Student"
        }
    }
    next();
}

app.get("/:userid", mapping, function(req,res){
    res.send(req.user);
});

app.listen(3000);

您只需要
app.use()
mapping。因为它总是调用next(),所以一旦工作完成,它将推迟到下一个路由

//始终使用“映射”中间件。
应用程序使用(映射);
//句柄GET/{userid}
app.get(“/:userid”),函数(req,res){
res.send(请求用户);
});

您只需
app.use()
映射即可。因为它总是调用next(),所以一旦工作完成,它将推迟到下一个路由

//始终使用“映射”中间件。
应用程序使用(映射);
//句柄GET/{userid}
app.get(“/:userid”),函数(req,res){
res.send(请求用户);
});
您可以使用该中间件专门应用于存在
userid
的路由:

function mapping(req,res,next,userId){
    console.log(req.params); 
    // actual data fetch from server depending on req.params
    // Example, if req.params.userid defined -> fetch userid from db and place it
    if (userid){
        req.user = {
            name: "Mustafa",
            title: "Student"
        }
    }
    next();
}

app.param( "userid", mapping );

app.get("/:userid", function(req,res){
    res.send(req.user);
});
您可以使用将中间件专门应用于存在
userid
的路由:

function mapping(req,res,next,userId){
    console.log(req.params); 
    // actual data fetch from server depending on req.params
    // Example, if req.params.userid defined -> fetch userid from db and place it
    if (userid){
        req.user = {
            name: "Mustafa",
            title: "Student"
        }
    }
    next();
}

app.param( "userid", mapping );

app.get("/:userid", function(req,res){
    res.send(req.user);
});

它不起作用,因为请求首先点击app.use,但不知道my/15是/:userid,因为它没有首先看到/:userid。哇,你是对的,@go oleg的回答是正确的:你想声明:userid为
app.param
。它不起作用,因为请求首先点击app.use,但是我不知道我的/15是/:userid,因为它没有首先看到/:userid。哎呀,你是对的,@go oleg的答案是正确的:你想将:userid声明为一个
app.param
。这是正确的答案@go oleg,我想你错误地在这行上留下了一个冗余的
映射
app.get(“/:userid”),映射,函数(req,res)
@tuxedo25:Ah,oops,我的b。修复了。谢谢!这是正确的答案。@go oleg,我想你错误地在这行上留下了一个冗余的
映射
:app.get(“/:userid”,映射,函数(req,res)
@tuxedo25:啊,哎呀,我的b.修好了。谢谢!