现在 uni-cloud-router 可以做到 controller层还有service层,如果需要再增加一个model层的话,请问要怎么操作呢?我是想加一个model层,数据库读写操作全部放在model层操作。然后通过service层调用model并返回给controller层。

秋峰
- 发布:2021-08-09 23:35
- 更新:2021-08-12 14:19
- 阅读:710
uni-cloud-router 如果要加一层 model层 请问要怎么操作
分类:uniCloud

可以简单地写个中间件,在ctx上挂上你的model对象即可
具体文档:
开发中间件:https://uniapp.dcloud.net.cn/uniCloud/uni-cloud-router?id=%E5%BC%80%E5%8F%91%E4%B8%AD%E9%97%B4%E4%BB%B6
使用中间件:https://uniapp.dcloud.net.cn/uniCloud/uni-cloud-router?id=%e4%bd%bf%e7%94%a8%e4%b8%ad%e9%97%b4%e4%bb%b6
const userModel = require('./models/user')
module.exports = () => {
return async function auth(ctx, next) {
ctx.userModel = userModel
await next();
};
};
秋峰 (作者)
感谢回答!但是,中间件是 在路由请求前,后添加处理逻辑,实现一些特定功能,如:用户登录,权限校验等,这个是在每次请求的时候就会做拦截请求,而model是调用数据的,并不是每个接口都会调用数据,有些接口不调用数据,也会启动model的话,就不是按需加载,是否会导致性能上受到影响呢?
2021-08-12 14:25
fxy060608
回复 6***@qq.com: 中间件可以配置生效的路由,你可以在具体的路由中初始化model,当然你也可以把model封装成使用时去加载,目前router内部的service和controller是有这样的机制,参考:https://github.com/fxy060608/uni-cloud-router/blob/master/src/BaseContext.ts#L83 ,后续可以考虑将这个能力开放出来
2021-08-12 15:11