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

Javascript nodejs post方法中的第二个参数是什么,javascript,node.js,express,Javascript,Node.js,Express,在我的代码中,我有这样的代码 router.post('/', publicShare, function(req, res, next) { 我签入但未找到第二个参数publicShare为什么在这里 publicShare看起来像 var publicShare = function(req, res, next) { if (condition1) { if (condition2) { res.status(400).send({suc

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

 router.post('/', publicShare, function(req, res, next) {
我签入但未找到第二个参数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();
    }
};

请帮助我理解

根据,您可以添加多个由逗号分隔的中间件函数。“publicShare”变量必须是一个中间件函数。

publicShare
路由中的方法是一个快速中间件函数。根据文档

中间件功能是可以访问请求的功能 对象(req)、响应对象(res)和下一个中间件 应用程序请求-响应周期中的函数

中间件检查应用于请求和响应对象的特定条件或条件,如果条件满足,则执行下一个操作,即

1-结束请求-响应周期

2-调用堆栈中的下一个中间件函数

您可以参考文档以了解更多信息-

您可以检查哪一个接受回调数组,它的行为就像一个中间件。文档中的示例:

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是带有请求、响应和next参数的回调。它允许您一个接一个地运行。cb1->执行日志1,然后cb2->执行日志2,cb3->执行日志3,依此类推

我会用一个例子来简化这一点:

你会要水的

1) 买一罐水

2) cb2:在桶或罐中加入少量水滴

3) cb3:煮一下


那么,轮到你了。喝吧

这是,per。它的快速中间件功能非常感谢@jonrsharpe和Shubh我是节点JS的新手现在我阅读了我搜索的文本是
一系列中间件功能(用逗号分隔)。
@ShubhDixit:请帮我忽略第二个中间件我在做什么?正在编写
next()不起作用了?请帮我忽略第二个中间件我在做什么?你可以删除它:'router.post('/',function(req,res,next){//yourcode}请帮我忽略第二个中间件我在做什么?只写
next()
在publicShare的第一行
不起作用了?@ctrlf5您可以删除它,或者直接调用其中的next(),删除像
var publicShare=function(req,res,next){next();};