формат даты typegoose / mongoose для остальных API - PullRequest
0 голосов
/ 22 сентября 2019

Я использую машинопись для сервера, подключенного к mongodb.

Я строго определяю выходные данные с помощью файла openapi.

С mongoose я очень хорошо знаю определение дат, например:

  birthday: Date;

и теперь с Typegoose:

  @prop()
  birthday: Date;

Пока все хорошо, за исключением тех случаев, когда мне нужно вывести данные с моего сервера машинописного текста, например:

  public async generateLoginTokensAndHttpResponse (userDoc: User, req: any): Promise<Login> {
    const renewalToken = JwtService.generateRenewalToken(userDoc);
    await JwtRepository.createNewJwt(userDoc._id, renewalToken, req.clientIp, req.headers['user-agent']);
    return {
      tokenAccess: {
        value: JwtService.generateAccessToken(userDoc),
      },
      tokenRenewal: {
        value: renewalToken,
      },
      user: userDoc,
    };
  }

Если интерфейс «Логин» выглядит следующим образом (генерируется на основе определения чванства):

export default interface Login {
  user: {
    verified: boolean;
    email: string;
    firstName: string;
    lastName: string;
    username: string;
    captchaLocked: boolean;
    birthday?: string;
  };
  tokenAccess: { value: string };
  tokenRenewal: { value: string };
}

Если я изменю значение birthday?: string; на birthday?: Date;, это нормально, но тогда это нарушает ожидаемый результатопределение чванства:

type: string
format: date-time

Было бы дорого обходить общие объекты, вызывая функцию для преобразования всех объектов даты в строки даты-времени.

Какова лучшая практика здесь?

...