egg中egg-sequelize和egg-mongoose不能同时使用
今天在项目中加入 egg-mongoose 插件,配置好 config 文件和 plugin.ts 信息后,运行代码,在加载 mongoose 插件的时候报错了,错误信息:
1 | nodejs.TypeError: Cannot assign to read only property 'model' of object '#<Application>' |
回看下代码发现原有的 egg-sequelize 已经挂载 model 到 app 上面
去掉其中一个插件都可以正常运行,看来 egg-sequelize 和 egg-mongoose 插件冲突了,excuse me?
错误原因
浏览 egg-sequelize 源码发现已经定义好 model 不能被重写
1 | Object.defineProperty(model, delegate[len - 1], { |
egg-mongoose 挂载 model 到 app 上时就会报Cannot assign to read only property
错误了。
解决方案
- 给官方提 issue:把问题和解决方案描述一下;
- 降级方案:去掉 MongoDB 的 model 层使用其他插件如 egg-mongo-native 或者自己封装一个;
- model 层使用一种数据库,将使用 MongoDB 和 MySQL 的业务拆分为两个服务;