一尘不染

将自定义Express中间件(如jQuery-File-Upload)添加到Sails.js

node.js

我仍然很难理解如何将中间件添加到sails.js。我听说过使用policy.js,创建自定义策略,添加到local.js等。所以有人可以告诉我如何将jquery-
file-upload-middleware
添加到Sails 应用程序中。提前致谢


阅读 233

收藏
2020-07-07

共1个答案

一尘不染

在Sails的早期版本中,这将非常困难,因为您无法控制包含自定义中间件的顺序。在v0.10中,这 有点 困难。

注意:以下内容适用于
Sails
Beta版本(v0.10.x),可通过安装npm install sails@beta

将自己的自定义中间件插入Sails就像将一个customMiddleware函数作为参数添加到config/express.js文件一样容易app。然后app.use,您就可以放心了。这种方法的缺点是,它不能让您控制
何时 包括中间件。值得注意的是,它包含 正文解析器之后,不适用于您的情况。

在最新版本的Sails中,可以通过实现中的方法来覆盖 所有
中间件加载。参数为,(Sail通常默认情况下通常包括的一组中间件函数)和(对全局Sails对象的引用)。首先看一下默认的核心实现
-您可能想要复制相同的顺序。因此,在您的中,您将遇到以下内容:loadMiddleware``/config/express.js``app``defaultMiddleware``sails/config/express.js

var upload = require('jquery-file-upload-middleware');

// configure upload middleware
upload.configure({
    uploadDir: __dirname + '/public/uploads',
    uploadUrl: '/uploads',
    imageVersions: {
        thumbnail: {
            width: 80,
            height: 80
        }
    }
});

module.exports.express = {

    loadMiddleware: function(app, defaultMiddleware, sails) {

        // Use the middleware in the correct order
        app.use(defaultMiddleware.startRequestTimer);
        app.use(defaultMiddleware.cookieParser);
        app.use(defaultMiddleware.session);
        // Insert upload file handler
        app.use('/upload', upload.fileHandler());
        app.use(defaultMiddleware.bodyParser);
        app.use(defaultMiddleware.handleBodyParserError);
        app.use(defaultMiddleware.methodOverride);
        app.use(defaultMiddleware.poweredBy);
        app.use(defaultMiddleware.router);
        app.use(defaultMiddleware.www);
        app.use(defaultMiddleware.favicon);
        app.use(defaultMiddleware[404]);
        app.use(defaultMiddleware[500]);
    }

    ...etc...

}
2020-07-07