node.js - 如何向 Express 路由中的中间件函数发送参数?

标签 node.js express

我正在做一个 MEAN 项目,我们有一些像这样定义的 api 路由:

//products.controller.js
var express = require('express');
var router = express.Router();
const m = require('../../middlewares');

router.get('/products', [m.functionA, m.functionB, m.functionC], getProducts);
router.post('/products', [m.functionA, m.functionB, m.functionC], addNewProduct);

module.exports = router;

function getProducts(req, res) {
    //code
}

function addNewProduct(req, res) {
    //code
}

................................

//middlewares.js

function functionA(req, res, next) {
    //code
}

function functionB(req, res, next) {
    //code
}

function functionC(req, res, next) {
    //code
}

现在我可以在这里访问 req、res 和 next。如何将自定义参数传递给这些中间件函数?

我查看了一些 SO 问题和其他文章,发现我可以这样做:

[m.functionA('data'), m.functionB('data'), m.functionC('data')]

但是在这样做时,我得到了 req, res 未定义的错误。

任何人都可以帮助/建议如何实现这一点。 让我知道是否需要在此处添加任何其他详细信息。

最佳答案

如果您想使用 m.functionA('data'),Express 中间件中的一个常见范例是创建一个将参数作为参数的函数,并返回一个中间件功能:

function functionA(customParameter) {
  return function(req, res, next) {
    // code
  }
}

内部函数(返回的函数)可以访问 customParameter 以及 req/res/next

关于node.js - 如何向 Express 路由中的中间件函数发送参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46240248/

相关文章:

node.js - 使用 Node.js 将流分块为数据 block

javascript - WebSocket/Node.js 帮助 : Can't establish a connection to wss://domain:8080 - NOT browser specific

node.js - 验证错误 : "expiresInMinutes" is not allowed NodeJs JsonWebToken

node.js - 在 graphicsmagick 中从远程流创建 GIF

javascript - 使用nodejs运行两个任务异步?

node.js - 使用带有 Express 和 Nodejs 的 socket.io-client 将查询发送到 java 服务器

javascript - 当响应完成时,我应该在快速响应(流)对象中处理哪些事件?

javascript - NodeJS/Express/Mean Stack

node.js - Typescript/Eslint 在我开始的每个项目中抛出 "Cannot read file tsconfig.json"

node.js - Instagram 地理请求