我尝试添加自定义中间件(express-useragent)。我把它放在http.js中的中间件对象中:
useragent: require('express-useragent').express()
但它没有用。我读到我需要取消注释order
数组,并且我的自定义中间件将在'$custom'
条目在该数组中的任何位置运行。我这样做但仍然没有调用我的自定义中间件。然后我用我的中间件替换'myRequestLogger'
,如下所示:
order: [
'startRequestTimer',
'cookieParser',
'session',
'useragent', //'myRequestLogger',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'router',
'www',
'favicon',
'404',
'500'
],
现在它可以工作,但我不确定这是否是我应该使用的正确顺序。是否有理由将订单数组注释掉?为什么在将自定义中间件添加到对象后它才能正常工作。这很令人困惑。
答案 0 :(得分:1)
在sails配置中注释掉的所有内容实际上都是默认值。我猜他们决定这样做,所以更容易看到哪些部分被改变了......
关于你的第二个问题,据我所知,你必须将它添加到订单数组,以指定何时应该使用中间件。毕竟订单确实有所作为。 Sails将从顶部开始,并为每个请求自己创建一个中间件层到下一个中间件层。