egg-sequelize 兼容达梦数据库

1. 兼容处理

先上干货,后续有过程前因后果

  • 新增依赖 dmdb 和 sequelize-dm8
yarn add dmdb sequelize-dm8 --save
  • 配置config.js
    sequelize 配置 Sequelize 对象
sequelize: {
      Sequelize: require('sequelize-dm8'),
      datasources: [{
		dialect: 'dmdb',
	   }]
}

2.相关依赖

  • dmdb
    此包为Node.js连接达梦8数据库的原生驱动,API详见安装目录下的《DM8程序员手册》
  • sequelize-dm8 github
    Sequelize v5 支持达梦数据库 DM8 封装 使用方法如下:
    dialect 的配置值为: dmdb。
npm install --save dmdb sequelize-dm8
const { Sequelize } = require('sequelize-dm8');
  • egg-dmdb github
    eggjs达梦数据库操作插件,使用后插件配置和使用方法如下:
exports.dmdb = {
};
const rows = await this.app.dmdb.query('SELECT * FROM TABLE1 WHERE A=? and B=?',['x','y']);

3.过程思路

  • 背景
    国产化替代,之前服务是用egg.js写的,通过egg-sequelize进行数据库操作。
    sequelize 原生支持 Oracle, Postgres, MySQL, MariaDB, SQLite,SQL Server。
  • 解决思路
  1. 询问 DeepSeek+Kimi, 给出通过sequelize-dm8去兼容,没有跑通;
  2. 查看egg.js,egg-sequelize,sequelize官方问题,没有找到对应方法;
  3. 查看egg-sequelize源码发现存在配置项可以解决问题;
    egg-sequelize/lib/loader.js
  const config = app.config.sequelize;
  // support customize sequelize
  app.Sequelize = config.Sequelize || require('sequelize');

根据这个配置,后续如果有其他的数据库应该也是可以自己实现一个sequelize版本去兼容

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐