类型ORM预先加载无效的列名与选择



在TypeORM中实现User实体和Roles实体时,我在true上使用了带有eager@ManyToMany

我实现了一个扩展RepositoryUserRepository

使用this.find()时,它可以正常工作(但也加载密码和API不需要提供的其他字段(。使用this.find({select: 'email firstname roles'})时,它突然给了我这个错误:

RequestError: Invalid column name 'userId'.

我也尝试添加选项relations,但这给了我错误

QueryFailedError: Error: Invalid column name 'userId'.

谁能帮我解决这个问题?

节点版本:12.16.2 类型ORM版本:0.2.24

打字稿版本:3.7.4
数据库:SQL Server

角色实体:

@Entity()
export class Role {
@ManyToMany(type => User, user => user.roles)
@PrimaryColumn()
role!: string
}

用户实体

@Entity()
export class User {
@PrimaryGeneratedColumn()
id!: number;
@Column()
public email!: string;
@Column()
public password!: string;
@Column()
public firstname!: string;
@ManyToMany(type => Role, role => role.role, {eager: true, nullable: true})
@JoinTable()
public roles!: Role[];
}

用户存储库:

@EntityRepository(User)
export class UserRepository extends Repository<User> {
whitelist: IWhitelist<User> = {
admin: ['email', 'firstname','roles', 'id',]
};
getOptions = (list: string) => {
return {select: this.whitelist[list], relations: ['roles']};
};
adminGetUsers = async (): Promise<Array<User> | undefined> => {
return await this.find(this.getOptions('admin'));
};
}

你试过吗

this.find({select: ['email', 'firstname', 'roles']}

从文档: https://github.com/typeorm/typeorm/blob/master/docs/find-options.md#basic-options

最新更新