我有一個讀取和寫入 MongoDB 實體的資料層。我只想在該層處理 MongoDB 檔案,而不是將該實作暴露給我的服務。
現在我正在做類似的事情:
// users.repository.ts
...
async getUserById(id: string): Promise<UserDto> {
const user = await this.model.findOne({ _id: id }).exec();
return this.transformToDto(user);
}
private transformToDto(user: UserDocument): UserDto {
return {
id: user._id,
...etc
}
}
...
這似乎過于冗長,必須有一種更簡單的方法來實作這一點,而無需向每個存盤庫添加幫助程式。
有沒有更清潔的方法來實作這一目標?
uj5u.com熱心網友回復:
您可以為此使用class-transformer,并且不需要使用額外的幫助方法,它可以立即回傳。
import { plainToClass } from 'class-transformer';
class UserDto {
id: string;
email: string;
role: string;
}
class Service {
async getUserById(id: string): Promise<UserDto> {
const user = await this.model.findOne({ _id: id }).exec();
return plainToClass(UserDto, user);
}
}
它將回傳轉換后的值,即UserDto
UserDto { id: 'U-111', email: 'U-111@email', role: 'user' }
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/431852.html
標籤:javascript 打字稿 mongodb 巢穴
