在我的代码中我有这样写的代码
router.post('/', publicShare, function(req, res, next) {
我签到documents但没有找到为什么第二个参数 publicShare
在这里?
publicShare
看起来像
var publicShare = function(req, res, next) {
if (condition1) {
if (condition2) {
res.status(400).send({success:false});
} else {
next();
}
} else {
if (condition3) {
res.status(401).send({success:false});
} else
next();
}
};
请帮助我理解。
最佳答案
可以查看route handlers它接受回调数组,其行为就像一个中间件。文档中的示例:
app.get('/example/d', [cb0, cb1], function (req, res, next) {
因此,在您的情况下,publicShare
可以是回调数组或只是一个回调,其签名只是一个接受 req
、res
的回调,和 next
作为参数。所以,你也可以像这样使用:
app.get('/', function(req, res, next){}, function(req, res, next){}, ...
为了更简单,您可以使用回调数组:
app.get('/',[cb1, cb2, cb3])
其中 cb1、cb2 和 cb3 是带有 request、response 和 next 参数的回调。它允许您一个接一个地运行。 cb1 -> 执行日志 1,然后是 cb2 -> 执行日志 2,cb3 -> 执行日志 3,依此类推。
我会用一个例子来简化这个:
你会要求喝水。
1) cb1:买一 jar 水。
2) cb2:在桶或 jar 里加入几滴水。
3) cb3:煮沸。
那么,轮到你了。喝!
关于javascript - nodejs post方法中的第二个参数是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54608069/