我收到此错误:
错误:发现循环依赖。用户依赖于自身。 依赖链:用户 -> 订单 => 用户
我正在尝试将我的项目从 express+sequelize 移动到 nest+sequelize-typescript 堆栈。正如我记得的那样,我通过将关联代码从模型文件移动到一个文件,解决了以前具有循环依赖关系的堆栈上的相同错误。 我搜索了互联网和文档,看起来我的代码看起来不错,但它不起作用。
官方续集文档建议我添加
constraints: false
我协会的代码,但 sequelize-typescript 没有工具可以做到这一点。
我做错了什么?请帮帮我!
入口点:
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { SequelizeModule } from '@nestjs/sequelize';
import { ConfigModule } from '@nestjs/config';
import { Dialect } from 'sequelize';
import { UsersModule } from '../base-modules/users/users.module';
import { OrdersModule } from '../base-modules/orders/orders.module';
@Module({
imports: [
ConfigModule.forRoot({
envFilePath: process.env.NODE_ENV !== 'prod' ? '.env.development' : '.env',}),SequelizeModule.forRoot({
dialect: process.env.DB_DIALECT as Dialect,host: process.env.DB_HOST,port: +process.env.DB_PORT,username: process.env.DB_USER,password: process.env.DB_PASS,database: process.env.DB_NAME,synchronize: true,autoLoadmodels: true,UsersModule,OrdersModule,],controllers: [AppController],providers: [AppService],})
export class AppModule {}
用户
import {
AllowNull,AutoIncrement,Column,DataType,Default,HasMany,HasOne,Model,PrimaryKey,Table,Unique,} from 'sequelize-typescript';
import { IUserAttributes,IUserCreationAttributes,UserRole } from './user.types';
import { Order } from '../orders/order.model';
@Table({
timestamps: true,tableName: 'users',})
export class User
extends Model<IUserAttributes,IUserCreationAttributes>
implements IUserAttributes
{
@AutoIncrement
@PrimaryKey
@Column(DataType.INTEGER.UNSIGNED)
id!: number;
@AllowNull(false)
@Unique
@Column(DataType.STRING(64))
name!: string;
@HasMany(() => Order)
orders?: Order[];
}
订单
import {
AllowNull,BelongsTo,ForeignKey,} from 'sequelize-typescript';
import {
IOrderAttributes,IOrderCreationAttributes,OrderCustom,OrderStatus,OrderType,TimeStamp,} from './order.types';
import { User } from '../users/user.model';
@Table({
timestamps: true,tableName: 'orders',})
export class Order
extends Model<IOrderAttributes,IOrderCreationAttributes>
implements IOrderAttributes
{
@AutoIncrement
@PrimaryKey
@Column(DataType.INTEGER.UNSIGNED)
id!: number;
@ForeignKey(() => User)
@Column
userId!: number;
@BelongsTo(() => User,'userId')
user?: User;
}