如何实现 函数返回值的DTO

定义一个数据库模型 User

interface User {
    id: string,
    name: string,
    xxxx: string,
}

定义一个DTO UserDTO

interface UserDTO {
    id: string,
    name: string,
}

定义一个方法,来获取一个用户。
一般的,我们不想暴露全部信息的话,我们会固定住暴露的属性(id, name)。


async function getUser(){
    const user = await UserService.findOne();
    return {
        id: user.id,
        name: user.name,
    };
}
// res= { id, name }

但是上面这个写法难以适用于自动化的场景,我想通过装饰器来实现下面的功能。

@ReturnDto(UserDTO)
async function getUser(){
    const user = await UserService.findOne();
    return user;
}
// res= { id, name }

我尝试过很多方法,但是还是没有办法在 异步获取 函数返回值的情况下,同时修改它。
请教如何简单的实现?

阅读 3.6k
推荐问题