安装依赖
$ npm install --save sequelize sequelize-typescript mysql2
$ npm install --save-dev @types/sequelize
建立table映射和提供privador
import { Table, Column, Model, PrimaryKey } from 'sequelize-typescript';
@Table({
tableName: 'z_user'
})
export class User extends Model<User> {
@PrimaryKey
@Column
id: number
@Column
userName: string;
}
export const userProvidersName = 'UserRepository';
export const userProviders = [
{
provide: userProvidersName,
useValue: User,
},
];
配置mysql的privador
把model加入
import { Sequelize } from 'sequelize-typescript';
import { User } from '../models/user.model';
export const databaseProviders = [
{
provide: 'SequelizeToken',
useFactory: async () => {
const sequelize = new Sequelize({
dialect: 'mysql',
host: '192.168.0.103',
port: 3306,
username: 'root',
password: '123456',
database: 'test',
});
sequelize.addModels([
User
]);
await sequelize.sync();
return sequelize;
},
},
];
sequlize module
import { Module } from '@nestjs/common';
import { databaseProviders } from './database.provider';
@Module({
providers: [...databaseProviders],
exports: [...databaseProviders],
})
export class DatabaseModule {}
引入项目
需要import sequlize的module和user的provider
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { DatabaseModule } from './database/database.module';
import { userProviders } from './models/user.model';
@Module({
imports: [
DatabaseModule
],
controllers: [AppController],
providers: [
AppService,
...userProviders
],
})
export class AppModule {}
使用
import { Controller, Get, Injectable, Inject } from '@nestjs/common';
import { AppService } from './app.service';
import { User, userProvidersName } from './models/user.model';
@Controller()
export class AppController {
constructor(private readonly appService: AppService, @Inject(userProvidersName) private readonly catsRepository: typeof User) {}
@Get('index')
getHello(): string {
let users = this.catsRepository.findAll();
return users;
}
}