秋峰
秋峰
  • 发布:2021-08-09 23:35
  • 更新:2021-08-12 14:19
  • 阅读:577

uni-cloud-router 如果要加一层 model层 请问要怎么操作

分类:uniCloud

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

2021-08-09 23:35 负责人:无 分享
已邀请:
fxy060608

fxy060608

可以简单地写个中间件,在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

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

在入口处自己处理下

  • 秋峰 (作者)

    可以请教下具体如何处理吗?刚学这块还不是很熟悉。感谢

    2021-08-10 22:33

秋峰

秋峰 (作者) - 微信小程序开发 云开发 serverless

请问下 可以帮解答下吗 如何在 uni-cloud-router 加model层

该问题目前已经被锁定, 无法添加新回复