繁体   English   中英

如何在 NestJs 中创建一个复杂的 object 的 dto

[英]How to create dto of an complex object in NestJs

我是 NestJs 的初学者,我想创建一个具有以下结构的 dto:

我想创建一个 API,它可以使用 DTO 返回这个 object。

export let Week = [
    {
        DayName : "TuesDay",
        TimeZone: [
            {
                First: {
                        Start: 18,
                        end: 19,
                        isReserved: false,
                        reserver: "someone"
                },
                Second: {
                        Start: 19,
                        end: 20,
                        isReserved: false,
                        reserver: "someone"
                },
                Third: {
                        Start: 20,
                        end: 21,
                        isReserved: false,
                        reserver: "someone"
                }
            }
        ]
    },
    {
        DayName : "Wednesday",
        TimeZone: [
            {
                First: {
                        Start: 18,
                        end: 19,
                        isReserved: false,
                        reserver: "someone"
                },
                Second: {
                        Start: 19,
                        end: 20,
                        isReserved: false,
                        reserver: "someone"
                },
                Third: {
                        Start: 20,
                        end: 21,
                        isReserved: false,
                        reserver: "someone"
                }
            }
        ]
    },
    {
        DayName : "Friday",
        TimeZone: [
            {
                First: {
                        Start: 18,
                        end: 19,
                        isReserved: false,
                        reserver: "someone"
                },
                Second: {
                        Start: 19,
                        end: 20,
                        isReserved: false,
                        reserver: "someone"
                },
                Third: {
                        Start: 20,
                        end: 21,
                        isReserved: false,
                        reserver: "someone"
                }
            }
        ]
    }
]

我尝试了以下 dto,但在服务提供商中遇到错误:

我创建了 3 个类 OneSessionResponseDto、SessionsResponseDto 和 WeekResponseDto,因此我可以将它们用作上面 object 的 dto。

export class OneSessionResponseDto {
    start: number;
    end: number;
    isReserved: boolean;
    reserver: string;
}

export class SessionsResponseDto {
    First: OneSessionResponseDto;
    Second: OneSessionResponseDto;
    Third: OneSessionResponseDto;
}

export class WeekResponseDto {
    DayName: string;
    TimeZone: SessionsResponseDto;
}

这是服务提供商 class:

@Injectable()
export class AppService {
    private week = Week;
    getWeek() : WeekResponseDto[] {
        return (this.week); <= the error
    }
}

我在这里收到此错误:

类型“SessionsResponseDto”中缺少以下属性:第一、第二、第三

你几乎拥有它。 您需要将TimeZone的类型设置为SessionsResponseDto[]因为它是一个数组。 然后将OneSessionResponseDto#start更改为OneSessionResponseDto#Start (大写很重要)。 您可以在 typoescript playground here 中看到一个可行的解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM