什么文档描述了传递给 express app.METHOD 回调参数的内容
Posted
技术标签:
【中文标题】什么文档描述了传递给 express app.METHOD 回调参数的内容【英文标题】:what documentation describe what are passed into express app.METHOD callback arguments 【发布时间】:2017-04-15 14:04:57 【问题描述】:我是 javascript 和 nodejs 的菜鸟,有时无法理解回调函数。我发现最令人困惑的是找到将哪些参数(或者应该称为参数?)传递给回调函数。
考虑以下示例
app.get('/', function (req, res)
res.send('GET request to homepage');
);
如果我理解正确,我可以将函数中的参数名称更改为其他名称(例如 a,b 而不是 req,res),它仍将分别包含请求和响应对象。
app.get('/', function (a, b)
b.send('GET request to homepage');
);
那是因为 app.get 方法/函数将它的第二个参数定义为回调函数,以及将什么作为参数传递给该回调函数,对吧?
如果上述情况属实,我只是无法在 Express API 文档中找到描述传递给该方法/函数的回调函数参数的文档。事实上,我几乎找不到描述传递给许多其他方法/函数的回调的文档。我在哪里可以找到这些信息?我是否因为搞砸了一些术语而查看了错误的信息?
【问题讨论】:
【参考方案1】:对于那些正在访问这个 3 年前的问题并希望得到答案的人(就像我一样), 我希望下面的回答能启发你的心情;)
平均回调(中间件函数)具有三个参数(即 req、res、next) https://expressjs.com/en/guide/writing-middleware.html 错误回调有特殊形式;它有四个参数。 https://expressjs.com/en/guide/error-handling.html#writing-error-handlers编写错误处理程序 定义错误处理中间件函数的方式与其他中间件函数相同,除了错误处理函数有四个参数而不是三个:(err, req, res, next) .例如:
app.use(function (err, req, res, next)
console.error(err.stack)
res.status(500).send('Something broke!')
)
如果您为 Express API 使用 TypeScript,则需要显式键入所有参数,否则编译器会将参数隐式键入 Any 并在编译期间崩溃。
app.use((err: Error, req: Request, res: Response, next: NextFunction) =>
console.error(err.stack)
res.status(500).send('Something broke!')
)
【讨论】:
【参考方案2】:你要找的文档在这里
http://expressjs.com/en/api.html#reqhttp://expressjs.com/en/api.html#res
【讨论】:
很抱歉,我没有看到所提供的文件实际上是如何回答我的问题的。这些文档解释了请求和响应对象的属性和方法。然而,我问的是哪些参数/参数被传递到 express 提供的方法/函数/API 回调中。 @NickLi 这些是 express 提供给路由回调函数的参数 在路由方法中有两个参数的简单情况下,是的。但是我见过有3个参数(req,res,next)和4个(err,req,res,next)的情况,它需要5,6或7个参数吗?在这些情况下会通过什么?我的问题是是否有关于此类信息的文件? (感谢您的帮助) 你应该阅读整个东西(文档页面..整个它)而不是让***为你背诵它 我很抱歉,但这不是 *** 的重点吗?在找不到答案时提出问题。关键是我阅读了文档,但我找不到信息,并且您发送的链接不包含我需要的信息(如果有,那么我最深切的道歉)。比如router.param documentation已经明确说明了回调函数的参数是什么,但不是router.METHOD或router.all,这就是我要问的。以上是关于什么文档描述了传递给 express app.METHOD 回调参数的内容的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能像传递其他变量一样将函数从 Express.js 传递给 EJS?
无法通过 Express 路由从 Mongodb 中删除文档
HTTP GET 参数未传递给 Express app.get [重复]