在TypeORM中实现User
实体和Roles
实体时,我在true上使用了带有eager
@ManyToMany
。
我实现了一个扩展Repository
UserRepository
。
使用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