NodeJS | MySQL连接 | sequelize入门

317 阅读1分钟

前言

此文用于记录RAP2中操作MySQL数据库的方式。RAP2项目中使用了sequelize-typescript,一款基于ORM中间件--sequelize扩展在便于开发者在TS项目中使用sequelize的库

安装

相关库

$ npm install --save mysql2 # 数据库驱动
$ npm install --save sequelize # ORM中间件
$ npm install --save @types/bluebird @types/node @types/validator
$ npm install --save reflect-metadata
$ npm install sequelize-typescript

配置

需要在tsconfig.json中设置以下属性

"target": "es6", // 或者更高的版本
"experimentalDecorators": true, // 启用装饰器特性
"emitDecoratorMetadata": true // 配合reflect-metadata的使用

使用

项目中申明

import {Sequelize} from 'sequelize-typescript';
const sequelize =  new Sequelize({
        database: 'some_db',
        dialect: 'sqlite',
        username: 'root',
        password: '',
        storage: ':memory:',
});

// 告诉sequelize模型存放位置
sequelize.addModels([__dirname + '/models'])

// 测试连接
sequelize.authenticate()

在使用模型之前你需先告诉sequelize它们在哪里,可以在new的时候配置models属性也可以另外添加

import {Sequelize} from 'sequelize-typescript';

const sequelize =  new Sequelize({
     ...
     models: [__dirname + '/**/*.model.ts']
});
// or
sequelize.addModels([__dirname + '/**/*.model.ts'])

模型调用

import {Table, Column, Model} from 'sequelize-typescript';

export const UserN = 'Not a model';
export const NUser = 'Not a model';

@Table({freezeTableName: false}) // 设置自动匹配复数 如User模型自动匹配的表为Users
export class User extends Model<User> {

  @Column
  nickname: string;
}

注意

sequelize-typescript@1仅适用于sequelize@5>=

sequelize-typescript@0.6适用于sequelize@4sequelize@3

参考

github.com/RobinBuschm…

sequelize.org/v5/manual/g…