NestJS,Sequelize 延迟加载

问题描述 投票:0回答:1

知道 Sequelize 延迟加载在 NestJS 中是否有效吗?我还没有找到太多相关信息,而且似乎不起作用。

import {
  BelongsTo,
  BelongsToMany,
  Column,
  ForeignKey,
  HasMany,
  Model,
  PrimaryKey,
  Table,
} from 'sequelize-typescript';
import { Roles } from './role.model';
import { UsersRole } from './users-role.model';

@Table({
  timestamps: false,
})
export class User extends Model {
  @PrimaryKey
  @Column
  id: string;

  @Column
  email: string;

  @BelongsToMany(
    () => Role,
    () => UsersRole,
    'userId',
    'roleId',
  )
  roles: Role[];
}

我正在尝试延迟加载

user.getRoles()
(也尝试过
user.getUsersRoles()
),但它给了我
Property 'getRoles' does not exist on type 'User'. Did you mean 'roles'?
(或
Property 'getUsersRoles' does not exist on type 'User'.
)它应该根据Sequelize文档工作:https://sequelize.org/docs/ v6/core-concepts/assocs/#fetching-associations---eager-loading-vs-lazy-loading

typescript sequelize.js nestjs lazy-loading
1个回答
0
投票

这并不是一个真正的解决方案,但你可以这样做:

@Table({ tableName: 'users' })
export class User extends Model {
  [x: string]: any;

  @AutoIncrement
  @PrimaryKey
  @Column({ primaryKey: true })
  id: number;
}

[x: string]: any;
将消除您遇到的所有错误。发生这种情况的原因是因为 getRoles() 是在类代码之后添加并动态添加的。使用
// @ts-ignore
是另一种方法。

© www.soinside.com 2019 - 2024. All rights reserved.