egg-monoose Cannot read property ‘Schema‘ of undefined

这周有个需求是使用 egg.js 接入 MongoDB 数据库,于是先按照官方推荐的方式使用 egg-mongoose,但是在按照文档进行操作写 demo 时出现了非常诡异的错误TypeError: Cannot read property 'Schema' of undefinedapp.mongoose app 下的 mongoose 没有被正常挂载上。

首先确认有没有拼写错误,没有的话直接用最小化方式使用 egg-mongoose 是否可以复现来确认是不是文档出现了问题。测试后发现正常。接下来就是排查本地代码,发现是由于 egg-sequelize 导致的,而部分业务接口之前配置了使用 MySQL 数据库。 egg-sequelize 和 egg-mongoose 默认都是加载 app/model 下的文件,具体逻辑后续详说。

 

看是否可以修改插件的加载目录。
egg-mongoose 是不能配置的,源码里面写死了指定的 model 路径, egg-sequelize 是可以的。

 

config.sequelize = {
    baseDir: 'my_model', // load all models to `app[delegate]` and `ctx[delegate]`, default to `model`
    delegate: 'myModel', // load all models to `app[delegate]` and `ctx[delegate]`, default to `model`
    dialect: 'mysql',
    host: process.env.MYSQL_HOST,
    port: 3306,
    database: process.env.MYSQL_DATABASE
    username: process.env.MYSQL_USER 
    password: process.env.MYSQL_PASSWORD
};

修改之前就没问题了,delegate 表示将 orm 挂载的位置,之前默认是 model,修改完之后不要忘记业务代码中的已有代码(如this.ctx.model.xxx => this.ctx.myModel.xxx)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值