Eggjs学习系列(五) Sequelize的使用
简单的数据库操作通过使用egg-mysql
插件基本上可以满足需求,而在一些较为复杂的应用中,我们可能会需要一个 ORM 框架来帮助我们管理数据层的代码。sequelize 是一个广泛使用的 ORM 框架,支持多种数据库。ORM 即使用面向对象的方式,通过操作对象来实现与数据库之前的交流,完成CRUD
的动作。
安装和配置插件
由于我们使用的是 TypeScript 语言,这里采用的是 egg-sequelize-ts
插件,插件使用 sequelize-typescript
来操作数据库。
npm install --save egg-sequelize-ts mysql2
在 config/plugin.ts
中引入 egg-sequelize 插件
const plugin: EggPlugin = {
// static: true,
sequelize: {
enable: true,
package: 'egg-sequelize-ts',
},
};
在 config/config.default.ts
中编写 sequelize 配置
import {
EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
export default (appInfo: EggAppInfo) => {
const config = {
} as PowerPartial<EggAppConfig>;
// add your special config in here
const bizConfig = {
sequelize: {
dialect: 'mysql',
host: '127.0.0.1',
port: 3306,
password: 'xxx',
database: 'egg',
},
}
// the return config will combines to EggAppConfig
return {
...config,
...bizConfig,
};
};
Sequelize-cli 使用
在日常开发种,经常会遇到数据库结构发生变更的情况,这时候需要使用 Migrations 来管理数据结构的变更,以实现在不同的开发环境和迭代切换中,快速变更数据结构。
安装 sequelize-cli
npm install --save sequelize-cli
在Nodejs Web应用中建立初始的数据访问层
npx sequelize init
将创建以下文件夹:
config
包含配置文件,它告诉CLI如何连接数据库models
包含您的项目的所有模型migrations
包含所有迁移文件seeders
包含所有种子文件
注意: 可以通过 .sequelizerc
设置 生成文件夹的位置。
// .sequelizerc
'use strict';
const path = require('path');
module.exports = {
config: path.join(__dirname, 'database/config.json'),
'migrations-path': path.join(__dirname,