知道 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
这并不是一个真正的解决方案,但你可以这样做:
@Table({ tableName: 'users' })
export class User extends Model {
[x: string]: any;
@AutoIncrement
@PrimaryKey
@Column({ primaryKey: true })
id: number;
}
[x: string]: any;
将消除您遇到的所有错误。发生这种情况的原因是因为 getRoles() 是在类代码之后添加并动态添加的。使用 // @ts-ignore
是另一种方法。