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

标签 javascript node.js express

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

 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 可以是回调数组或只是一个回调,其签名只是一个接受 reqres 的回调,和 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/

相关文章:

javascript - 为什么我的代码在每个元素后面返回一个逗号?

javascript - 获取没有输入名称的发布数据

六位 base36 数字范围的 Javascript 正则表达式

javascript - 如何在 TypeScript WebSocket 上发送消息

Node.js:带有 CNAME 记录的 url 路由

javascript - 跨 "page loads"无缝音乐播放的理想解决方案?使用javascript加载页面

javascript - jqueryeffect() 函数无法识别

node.js - SailsJs 调用 save 方法后没有任何反应

jquery - 是否可以使用JQuery拖放和上传图像?

node.js - 使用 multer 上传文件时遇到问题