NestJS中,我们对返回的数据对象一般采用DTO类定义返回,但有的时候,我们要返回的数据较少,又不想使用DTO类定义,可以考虑使用下面的方法实现:
return
{
id: id,
name: name,
age: age
}
不添加属性而在Entity中添加临时字段返回数据,只要直接给类实例新变量赋值即可:
如有以下实体类:
class dto {
id: number;
value: string;
}
const a = new dto();
a.id = 0;
a.value = "1111";
a.name = "name"
console.log(a)
下划线处并没有在class中定义name,但我们可以直接赋值。而输出结果也是能看到有name:
[LOG]: dto: {
"id": 0,
"value": "1111",
"name": "name"
}
当然,在TypeScript中,你也可以通过 & 符号(交叉类型(Intersection Types))来实现拼接两个类定义从而返回数据,例如:
type TempDto = dto & { [key: string]: object }
上面代码,额可以给原来的DTO增加一个数组对象! 示例代码:
const resultUserList = []
type TempUser = UsersEntity & { [key: string]: object }
for (let i = 0; i < entities.length; i++) {
const user = entities[i]
const tempUserData = user as TempUser;
const query = new QueryDTO();
query.status = 0;
query.userId = user.id;
const technologyList = await this.service.getUserList(query)
tempUserData.list = technologyList
resultUserList.push(tempUserData)
}