如何从嵌套了UserDto的CompanyDto对象中获取属性?
如何从嵌套了UserDto的CompanyDto对象中获取属性?
嘿,看起来你在处理嵌套的DTO对象,想拿到里面UserDto的属性对吧?别担心,这事儿其实挺简单的,我给你分享几种实际开发里常用的做法:
直接通过点语法访问
只要你的CompanyDto实例已经正确初始化(不管是通过构造函数传入完整的嵌套对象,还是用class-transformer转换过),直接用点链就能拿到UserDto里的属性:// 先创建一个带嵌套UserDto的CompanyDto实例 const company = new CompanyDto({ id: 1, companyName: "Tech Corp", user: new UserDto({ id: 101, username: "john_doe", email: "john@example.com" }) }); // 直接获取UserDto的属性 const userId = company.user.id; const userEmail = company.user.email;要是
user字段有可能为undefined,记得用可选链操作符避免报错:company.user?.id结合class-transformer的转换场景
既然你用到了class-transformer的@Type装饰器,记得一定要用plainToInstance(或者旧版的plainToClass)把原始JS对象转换成DTO实例,这样嵌套的user才会被正确转换成UserDto对象,而不是普通JS对象:import { plainToInstance } from 'class-transformer'; // 假设这是从接口拿到的原始数据 const rawCompanyData = { id: 2, companyName: "Design Studio", user: { id: 102, username: "jane_smith", email: "jane@example.com" } }; // 转换成CompanyDto实例,@Type会自动处理嵌套的UserDto const company = plainToInstance(CompanyDto, rawCompanyData); // 现在就能正常访问嵌套属性了 console.log(company.user.username); // 输出 "jane_smith"处理空值/未定义的情况
实际开发里嵌套字段可能缺失,一定要做好防御性编程,比如用可选链+空值合并操作符:// 就算user不存在,也不会报错,会返回默认值 const username = company.user?.username ?? "Unknown User";
备注:内容来源于stack exchange,提问作者derstauner
相关产品推荐
相关产品推荐

