簡體   English   中英

EntityColumnNotFound:未找到實體列“joinDate”

[英]EntityColumnNotFound: No entity column "joinDate" was found

我需要使用 typeorm 更新用戶實體。 用戶有額外的計算列joinDate如下:

export default class USAppUser extends BaseEntity {
  @PrimaryGeneratedColumn("uuid")
  id: string;

  joinDate: number;

  @AfterLoad()
  getJoinDate() {
    this.joinDate = new Date(this.created_at).getTime();
  }
}

現在,我更新User實體如下:

async updateUser(userId, url) {
  const dbUser = await User.findOne(userId);

  if (!dbUser) {
    throw new UserInputError("User doesn't exist.");
  }
  dbUser.avatar = url + "?time=" + super.getTimeStamp();

  // delete dbUser.joinDate; // ** Need to do this to update without errors **

  await User.update(userId, { ...dbUser });

  return dbUser.avatar;
}

Typeorm 拋出異常

EntityColumnNotFound:未找到實體列“joinDate”。

作為一種解決方法,我使用delete dbUser.joinDate在更新之前刪除屬性。 但我確信有更好的方法來做到這一點。 請指教。

將 getJoinDate 更改為

@AfterLoad()
getJoinDate() {
    return new Date(this.created_at).getTime();
}

從實體中刪除 joinDate 屬性,然后在引用 joinDate 的地方調用 getJoinDate() 。

編輯

這是另一種方法。

export class JoinDateUSAppUser { 
    constructor(private user: USAppUser) {}

    joinDate: number;
    getJoinDate() {
        this.joinDate = new Date(this.user.created_at).getTime();
    }
}

這樣,您必須創建一個單獨的變量來訪問 joinDate。

不知何故update function 沒有工作。 嘗試save function 並且它在沒有任何更改的情況下工作。

dbUser.avatar = url + "?time=" + super.getTimeStamp();
await User.save(dbUser); //save works

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM