Nodejs post方法中的第二个参数是什么

ctr*_* f5 5 javascript node.js express

在我的代码中我有这样写的代码

 router.post('/', publicShare, function(req, res, next) {
Run Code Online (Sandbox Code Playgroud)

我检查文档但没有找到为什么第二个参数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();
    }
};
Run Code Online (Sandbox Code Playgroud)

请帮助我理解。

Bho*_*yar 5

您可以检查接受回调数组的路由处理程序,其行为就像中间件一样。文档中的示例:

app.get('/example/d', [cb0, cb1], function (req, res, next) {
Run Code Online (Sandbox Code Playgroud)

因此,在您的情况下publicShare,可以是回调数组或只是一个回调,其签名只是一个接受req, res, 和next作为参数的回调。所以,你也可以使用像:

app.get('/', function(req, res, next){}, function(req, res, next){}, ...
Run Code Online (Sandbox Code Playgroud)

为了更简单,您可以使用回调数组:

app.get('/',[cb1, cb2, cb3])
Run Code Online (Sandbox Code Playgroud)

其中 cb1、cb2 和 cb3 是带有 request、response 和 next 参数的回调。它允许您一项一项地运行。cb1 -> 执行日志 1,然后 cb2 -> 执行日志 2,cb3 -> 执行日志 3,依此类推。

我会用一个例子来简化它:

你会要求水。

1)cb1:购买一罐水。

2) cb2: 在桶或罐子里加入几滴水。

3)cb3:煮沸。

然后,轮到你了。喝!