1、🍉 sequelize-typescript
因为我们的项目使用 TS
作为开发语言,所以自然的,我们要安装 sequelize-typescript
,用这个库来使用 TS
版的 Sequelize
。
1-1、安装
npm i sequelize-typescript
2、🍓 融合数据库配置
这里,我们把数据库配置融合到项目配置文件中,方便进行统一管理调用。
// file: backend/src/configs/index.ts
import databaseConfig from './database.json';
// 也可以把类型声明放到单独的 .d.ts 文件中,如:/src/types/global.d.ts
interface IDatabaseConfig {
username: string,
password: string | null,
database: string,
host: string,
dialect: "mysql" | "postgres" | "sqlite" | "mariadb" | "mssql",
timezone: string
}
const configs = {
development: {
server: {
host: 'localhost',
port: 8080
},
database: databaseConfig.development as IDatabaseConfig
},
// ...
}
export default configs[NODE_ENV];
3、🍊 连接数据库
在应用入口文件中,连接数据库
// file: backend/src/app.ts
//...
import {Sequelize} from "sequelize-typescript";
const app = async () => {
// 连接数据库
app.context.db = new Sequelize({
...configs.database,
models: [__dirname + '/models/**/*']
});
// ...
}
models
指定模型文件所在位置。
4、🍇 模型是什么?
其实这里说的模型(ORM
)就类似我们前端经常说到的 DOM
,有了 DOM
我们在 JS
中通过对象就可以对文档进行操作了,我们对这些 DOM对象
的操作就映射到对应的 HTML元素
上了。
这里的模型也是一个一个的对象(类),它们的映射关系是:
- 类 <=> 数据库表
- 类的实例对象 <=> 数据库表中的其中一条数据
我们对类的操作就是操作与其关联的表,对类的某个实例对象的操作就是操作这个关联表中的某条数据。
5、🍅 ORM 的优缺点
优点
- 不需要写那种看起来比较恶心的
SQL
,开发速度快。 - 通过统一的对象操作,底层再转化成对应的(甚至不同数据库)
SQL
,较少编码差异。
缺点
- 因为底层最终会转化成
SQL
,有的时候自动生成的SQL
执行性能会受到影响 - 一些复杂的
SQL
通过ORM
描述会比较繁琐,有的时候还是需要用到原生查询。