0

我正在为与 mongodb 耦合的服务器使用打字稿。

我正在使用 openapi 文件严格定义输出。

对于猫鼬,我非常熟悉定义日期,例如:

  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,
    };
  }

界面“登录”看起来像这样(基于 swagger 定义生成):

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;它是可以的,但是这会破坏 swagger 定义的预期输出:

type: string
format: date-time

迭代调用函数将所有日期对象转换为日期时间字符串的整个对象会很昂贵。

这里的最佳做法是什么?

4

1 回答 1

2

我建议使用JSON.stringify/ JSON.parse,它将日期从/转换为字符串

于 2019-11-30T19:05:32.113 回答