我的应用程序索引/起点中有多个app.use。
即
Where
F.[Datetime] >= @fromDate
AND F.[Datetime] <= @toDate
AND Em.Name IN (@Name)
AND F.[time] >= @fromtime
AND F.[time] <= @totime
以此类推。
现在,这使我的代码不整洁(在index.js中),因此我考虑创建一个单独的js文件(例如app.use(
if (!req.contextToken && req.contextTokenchecked) {
req.queryToFirebase = false;
req.contextTokenchecked = true;
req.contextToken = {}
}
next()
)
app.use(//Do something 2)
),该文件将包含我所有的intialize.js
到目前为止,我习惯于仅创建单独的路线
app.use
,然后将其导入我的index.js
const express = require('express')
const router = express.Router()
但是这次我不希望我的路线位于单独的文件中,而是全部
app.use('/auth', auth)
在一个common.js文件中
第二,我还有一条从gmail(gmail.js)加载数据的路由。
app.use()
当前,在所有路由中,我都在手动添加中间件app.use('/gmail', gmail)
。是否可以做一些事情,使isLoggedIn
里面的所有路由都继承该中间件
答案 0 :(得分:1)
您注册的中间件总是按照注册的顺序执行。因此,如果您有这样的代码:
app.use((req, res, next) => {
// middleware A
next()
})
app.use((req, res, next) => {
// middleware B
next()
})
app.use(middlewareC)
app.use('/gmail', gmail)
然后,您可以确定在app.use('/gmail', gmail)
之前为这些中间件创建一个公用文件:
common.js
let router = express.Router()
router.use((req, res, next) => {
// middleware A
next()
})
router.use((req, res, next) => {
// middleware B
next()
})
router.use(middlewareC)
module.exports = router
main.js
app.use(require('./common.js'))
app.use('/gmail', gmail)
use(或任何其他注册方法)的API为([path,] callback [, callback...])
因此,您可以根据需要注册尽可能多的中间件作为回调,因此可以在isLoggedIn
路由器前面添加gmail
:
app.use('/gmail', isLoggedIn, gmail)