Midway

1,039 阅读2分钟

最近了解到egg和Midway以及nest

来看一下发展历程

Express

最早的node后台框架

Nest

Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。这使得开发者可以自由地使用适用于底层平台的无数的第三方模块。

Koa

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

Egg

底层基于 Koa,异步解决方案不同

Midway

Midway 设计之初就可以兼容多种上层框架,在 Web 场景默认封装了 Egg.js 作为上层的 Web 框架,同时,Midway 也提供了其他的 Web 框架选择,比如常见的 Express 和 Koa 。

这些上层框架都可以使用 Midway 提供的装饰器能力,但是 Midway 不会对特有的能力做出封装,比如 Egg.js 的插件体系,或者 Express 的中间件能力,如果你对其中的某个框架比较熟悉,或者希望使用特定框架的能力,就可以选择它作为你的主力 Web 框架。

个人对文档的观点

  • Midway:文档是语雀写的,其中多库连接这块使用方法写的是不全的,需要去看下源码。
  • Nest:文档是普遍来说文档写的不错的。
  • Egg:相对于Nest来说是差一点的。

框架选择

看自己缘分,都是后台框架,能完成工作都是ok的。

Midway学习中遇到的多库问题

文档步骤

image.png

image.png

image.png

出现问题

当使用test的库的时候会报错

image.png

分析问题

根据报错内容讲错误规定在model层,但是我的model层是按照文档去实现的,将test换成default完美运行,根据报错,这里是默认了模型归属是default,而这里文档并没有说明,查看github的issue也没有类似的问题出现,也就指定了问题出现在InjectEntityModel

image.png 根据路径找到声明这个方法的文件找到对应的方法

image.png 这里给了默认值,所以只要不传参数这里的指向连接永远是default

问题解决

注入model的时候,传参数为多库的连接就可以了,给予使用的库指向

image.png