我想使用 TypeORM 創建一個 NestJS API,并希望將數據庫用戶映射到發送到客戶端的響應模型。我的 UserEntity 只包含一些基本信息@Entity('User')export class UserEntity { @PrimaryGeneratedColumn() id: number; @Column() username: string; @Column() passwordHash: string; @Column() passwordSalt: string;}但顯然我無法將密碼信息發送回客戶端。我創建了一個只包含相關信息的響應對象export interface UserRO { id: number; username: string;}在調用 GET /users 時,我希望有一組 UserRO。所以我去了 public async find(): Promise<UserRO[]> { return this.usersRepository.find(); // returning a list of UserEntities }不幸的是沒有映射,所以響應對象仍然包含密碼信息。我用這段代碼證明了它 public async find(): Promise<UserRO[]> { const dbUsers: UserEntity[] = await this.usersRepository.find(); const roUsers: UserRO[] = dbUsers; console.log(dbUsers); console.log(roUsers); // still holding the password information return roUsers; }我還使用地圖功能添加了一個快速修復 public async find(): Promise<UserRO[]> { const dbUsers: UserEntity[] = await this.usersRepository.find(); const roUsers: UserRO[] = dbUsers.map((dbUser: UserEntity) => { return { id: dbUser.id, username: dbUser.username, }; }); console.log(dbUsers); console.log(roUsers); // not holding the password information anymore return roUsers; }我的問題是:我真的必須手動完成嗎?我希望 TypeScript 會刪除或忽略所有“未知”鍵,并且只從匹配的鍵中獲取值。
將對象映射到接口并刪除所有不存在的鍵
慕容708150
2021-11-12 16:47:16