亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將對象映射到接口并刪除所有不存在的鍵

將對象映射到接口并刪除所有不存在的鍵

慕容708150 2021-11-12 16:47:16
我想使用 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 會刪除或忽略所有“未知”鍵,并且只從匹配的鍵中獲取值。
查看完整描述

1 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

在列設置中,您可以添加select: false從數據庫中選擇實體時避免包含字段的選項:隱藏列


查看完整回答
反對 回復 2021-11-12
  • 1 回答
  • 0 關注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號