「TodoList」后端-数据库连接

    科技2022-07-16  118

    后端-数据库连接

    1、🍉 sequelize-typescript1-1、安装 2、🍓 融合数据库配置3、🍊 连接数据库4、🍇 模型是什么?5、🍅 ORM 的优缺点

    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 描述会比较繁琐,有的时候还是需要用到原生查询。
    Processed: 0.009, SQL: 8