How to use custom route middleware with Sails.js? (ExpressJS) How to use custom route middleware with Sails.js? (ExpressJS) express express

How to use custom route middleware with Sails.js? (ExpressJS)


You can use policies to achieve this. Save your isAjax function as isAjax.js under your api/policies folder, and change it to just use module.exports instead of module.exports.isAjax. Then in your config/policies.js file, you can specify which controllers/actions to apply the policy to--to run isAjax for every route, just do:

'*':'isAjax'

in that file.


I had the same issue of figuring out how to make use of middlewares.They are basically defined in the config/policies.js.
So, if you want to use middlewares(aka policies) like old style, you can do the following (this may not be the nicest way):

// config/policies.js'*': [   express.logger(),  function(req, res, next) {    // do whatever you want to    // and then call next()    next();  }]

However, the real sailjs way is to put all such policies in api/policies/ folder


To add compress middleware of express, I find this thread and

sails-middleware-example-issue are very usefull.

  1. install express local: npm install express
  2. load express: var exp = require('express')
  3. add customMiddleware in $app_dir/config/local.js
express: {    customMiddleware: function (app) {      console.log("config of Middleware is called");      app.use(exp.logger());      app.use(exp.compress());      app.use(function (req, res, next) {        console.log("installed customMiddleware is used");        next();      })    }  }