【问题标题】:Adding custom middleware添加自定义中间件
【发布时间】:2018-01-24 01:47:47
【问题描述】:

我有一条路线,其中包含:groupIndexreq.param。我想将此索引作为中间件处理以获得特定的 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();
}

【问题讨论】:

    标签: node.js express middleware


    【解决方案1】:

    我会查看middleware 指南,但通常所有中间件函数都有以下签名:

    function myMiddleware(req, res, next)
    

    其中reqresnext 是从 Express 本身传入的。您不调用该函数,只需将其作为参数 (higher-order functions) 传递给您的路由定义:

    router.get('/person/:groupIndex(\\d+)', myMiddleware, ...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 2021-06-16
      • 1970-01-01
      • 2017-06-26
      相关资源
      最近更新 更多