javascript - 如何将 javascript 对象映射到类并删除其中不需要的属性
问题描述
准确地说,我使用 Typescript 和 ExpressJS 来创建 API。
假设我有一个打字稿用户模型:
class UserModel {
id: number;
email: string;
password: string;
name: string;
dob: Date;
gender: UserGender;
connections: UserModel[]
}
enum UserGender {
"MALE" = 1,
"FEMALE" = 2,
"OTHER" = 3
}
我想限制对象仅发送响应对象类中包含的那些属性,即
class ConnectionResponse {
id: number;
name: string;
email: string;
dob: Date,
gender: UserGender;
}
class UserConnectionsResponse {
id: number;
connections: ConnectionResponse[];
}
此类排除了一些属性,例如password
应该ConnectionResponse
映射到的UserModel
和
UserConnectionResponse
也应该映射到UserModel
但只有id
andconnections
字段。
是否有任何包或通用方法可以将我从数据库中获取的所有模型映射到响应对象,并且只包含响应对象中存在的属性而不是整个模型?
PS:我不想通过循环遍历类和手动删除属性来手动实现这一点。请建议一些其他解决方法,例如包或任何其他东西。
解决方案
你可以写一个像这样的通用分配函数。
function assign(target: any, origin: any) {
let keys = Object.getOwnPropertyNames(target);
keys.forEach(key => {
target [key] = origin[key]
});
}
let source: UserModel = getUserModel();
let dest: UserConnectionsResponse = new UserConnectionsResponse();
assign(dest, source);
推荐阅读
- r - 如何在 R 中使用 ggplot2 将 y 轴更改为百分比?
- javascript - 无法读取未定义类型错误的属性“订阅”
- c - 仿射代码错误
- html - CSS - 如何在背景图像之上获取 div?
- javascript - 如何从 id_attributes 数组中获取combinationId
- python-3.x - python中的BCM套接字循环接收
- firebase - 如何限制用户从 Firestore 文档中读取数据?
- powershell - 使用参数执行 CMD.exe 的 PowerShell 脚本
- python - 总结相同的列表元素
- regression - 具有给定目标值上限和下限的回归