javascript - 如何更好地组织 express 中间件?

标签 javascript node.js express middleware

<分区>

我将 node 与 express 结合使用,以下代码按预期工作。

文件 app.js

app.use(function (req, res, next) {
    fs.mkdir('uploads/', function (e) {
        if (!!e && e.code !== 'EEXIST') {
            console.log('Error while trying to create upload folder: ' + err);
        }
        next();
    });
}, upload.single('file'));

我的问题是有没有更好的写法呢? 我的意思是将功能逻辑分离到其他文件并要求它?

最佳答案

我建议创建文件“{project_root}/middlewares/fsUtils.js”:

function createFolderIfNotExists(folder) {
    return function (req, res, next) {
        fs.mkdir(folder, function (e) {
            if (!!e && e.code !== 'EEXIST') {
                console.log('Error while trying to create upload folder: ' + err);
            }
            next();
        });
    };
}

module.exports = {
    createFolderIfNotExists: createFolderIfNotExists
};

然后你可以像这样使用它:

var fsUtils = require('./middlewares/fsUtils');

app.use(fsUtils.createFolderIfNotExists('/uploads'), upload.single('file'));

虽然不是理想的方法。最好将初始化逻辑移动到单独的脚本并在应用程序启动时运行它,这样当您期望“上传”文件夹存在于文件系统中时 - 它已经存在了。

关于javascript - 如何更好地组织 express 中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35277692/

相关文章:

node.js - 使用 Mongoose 中间件删除钩子(Hook)从数组中级联删除

node.js - 使用 Express.js 在 Node.js 中获取 POST 参数

javascript - 如何访问函数中的命名参数?

javascript - 使用 PhantomJS 将多个页面渲染为 pdf 文件

javascript - 隐藏 y 轴 dc.js 条形图上的所有文本

javascript - Ajax 调用后更改 Div 的高度

node.js - MongoDB 安装 macOS Catalina

arrays - 如何查询 MongoDB 数组中的单个嵌入文档?

javascript - 将 Google "My Maps"图层添加到 Google map Javascript API

javascript - Node/异步 : how to keep my code easy to understand