我有一个“控制器”中间件(连接到koa-router)。
我想知道组织我的“内部”应用程序逻辑的最佳方法是什么(超出我的控制器,连接到koa-router router.post('/', createCtrl)
的中间件功能)。
ctx.state
阅读并传递下一个中间件所需的参数)。
import * as view from './views'
import * as repo from './repository'
import * as response from '../../services/response'
import { sign } from '../../services/jwt'
import compose from 'koa-compose'
const createCtrl = compose([
repo.create(),
sign(),
view.sessionUser(),
response.success(201)
])
import * as view from './views'
import * as repo from './repository'
import * as response from '../../services/response'
import { sign } from '../../services/jwt'
const createCtrl = async function (ctx) {
try {
const entity = await repo.create()
const token = await sign(entity.id)
const dto = view.sessionUser(token, entity)
const response = response.success(201)
response(ctx, dto) // <- this is also a middleware
} catch(err) {
ctx.throw(500, 'my not very well handled error')
}
}
将控制器视为中间件功能的组合是一个好主意吗?或者这是滥用中间件功能的意图?