nestjs 引入sequelize

本文详细介绍了如何在Node.js环境中使用TypeORM和MySQL2安装并配置数据库连接,包括依赖安装、模型映射、数据库配置及模块注册,最后展示了如何在控制器中使用User模型进行数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装依赖

  $ 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;
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值