Node.js 添加自定义中间件
我有一个路由,其中包含Node.js 添加自定义中间件,node.js,express,middleware,Node.js,Express,Middleware,我有一个路由,其中包含请求参数:groupIndex。我希望将此索引作为中间件处理,以获得特定的id Node和express对我来说是新手,所以我可能错过了一些简单的东西,但阅读文档和查看其他实现似乎不起作用 你知道我哪里会出错吗 // routes.js const express = require("express"); const router = express.Router(); const customMiddleware = ('./customMiddleware.js'
请求参数:groupIndex
。我希望将此索引作为中间件处理,以获得特定的id
Node和express对我来说是新手,所以我可能错过了一些简单的东西,但阅读文档和查看其他实现似乎不起作用
你知道我哪里会出错吗
// routes.js
const express = require("express");
const router = express.Router();
const customMiddleware = ('./customMiddleware.js');
const db = require('./mysqlCon.js');
router.get('/person/:groupIndex(\\d+)', customMiddleware(), function (req, res) {
let id = req.params.id;
let query = `
SELECT
*
FROM
data
WHERE
id = ?
`;
let query_params = [id];
db.query(
query,
query_params,
function(error, result, fields) {
if ( result.length == 1 ) {
res.status(200).json( result[0] );
} else {
res.status(401).json({});
}
}
);
});
// customMiddleware.js
const db = require('./mysqlCon.js');
module.exports = (req, res, next) => {
let groupIndex = parseInt(req.params.groupIndex);
let query = `
SELECT
id
FROM
listofids
LIMIT 1
OFFSET ?
`;
let query_params = [groupIndex];
db.query(
query,
query_params,
function(error, result, fields) {
if ( result.length == 1 ) {
req.params.id = result[0].id;
} else {
res.status(401).json({});
}
}
);
next();
}
我将回顾该指南,但通常所有中间件功能都有以下特征:
function myMiddleware(req, res, next)
其中req
,res
,next
是从Express本身传入的。您不调用该函数,只需将其作为参数()传递给路由定义:
router.get('/person/:groupIndex(\\d+)', myMiddleware, ...)