前言
此文用于记录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@4或sequelize@3