node.js_中间件

来源:互联网 发布:网络推广计划方案 编辑:程序博客网 时间:2024/06/04 23:27

如果我的的get、post回调函数中,没有next参数,那么就匹配上第一个路由,就不会往下匹配了。

如果想往下匹配的话,那么需要写next()

app.get("/",function(req,res,next){    console.log("1");    next();});app.get("/",function(req,res){    console.log("2");});

代码冲突路由情况:

var express = require("express");var app = express();app.get("/:username/:id", function (req, res) {    console.log("1");    res.send("用户信息" + req.params.username);});app.post("/admin/login", function (req, res) {    console.log("2");    res.send("管理员登录");});app.listen(3000);

解决方式:可以换一下上下位置

这些路由只要匹配上第一个,就不会往下匹配了。

另一个解决方法:检索判断

var express = require("express");var app = express();app.get("/:username/:id", function (req, res) {    var username = req.params.username;    //检索数据库,如果username不存在,那么next()    if(检索数据库){        console.log("1");        res.rend("用户信息");    } else {        next();    }});app.post("/admin/login", function (req, res) {    console.log("2");    res.send("管理员登录");});app.listen(3000);

路由getpost就是中间件,中间件讲究顺序,匹配上第一个之后,就不会往后匹配了。next函数才能够往后匹配