如何在 LoopBack 4 模型中指定没有时间的日期?

Posted

技术标签:

【中文标题】如何在 LoopBack 4 模型中指定没有时间的日期?【英文标题】:How can I specificy Date without time in LoopBack 4 models? 【发布时间】:2020-01-11 05:51:54 【问题描述】:

我正在使用 LoopBack 4 构建一个 API,在一个模型中有一个名为“day”的属性,它是一个 Date 类型(mysql 列也是 Date 类型)。

但我不能向它发布像“2019-09-09”这样的值,因为它想要像“2019-09-09T12:41:05.942Z”这样的东西。 如何指定它必须是日期(没有时间)?

我很困惑,因为您可以在查询参数(日期类型)中传递“2019-09-09”,但不能在模型中传递。

我目前在模型中有这样的属性:

@property(
    type: Date,
    required: true,
    mysql: 
        columnName: 'day',
        dataType: 'date',
        dataLength: null,
        dataPrecision: null,
        dataScale: null,
        nullable: 'N',
    ,
)
day: Date;

预期:接受“2019-09-09”作为值

其实:422:天应该匹配格式“日期-时间”

【问题讨论】:

为什么不随时间发布呢? MySQL 会忽略它,对吧? 我正在重建一个旧的 API,它可以接受没有时间的日子。如果 API 没有太大差异,那么使用旧 API 的旧客户端仍然可以使用新 API,这将非常有帮助。 【参考方案1】:

我遇到了同样的问题,我使用 jsonSchema 指定请求 JSON 的格式解决了它。

在您的情况下,您必须通过以下方式更改代码:

@property(
    type: 'date', // Types in LoopBack4 are not case-sensitive so Date is the same than date
    jsonSchema:  
      format: 'date', //This can be changed to 'date-time', 'time' or 'date'
    ,
    required: true,
    mysql: 
        columnName: 'day',
        dataType: 'date',
        dataLength: null,
        dataPrecision: null,
        dataScale: null,
        nullable: 'N',
    ,
)
day: string; // Change this also

【讨论】:

【参考方案2】:

类型应更改为'date' 而不是Date。这将允许更灵活的日期模式:

@property(
    type: 'date',
    required: true,
    mysql: 
        columnName: 'day',
        dataType: 'date',
        dataLength: null,
        dataPrecision: null,
        dataScale: null,
        nullable: 'N',
    ,
)
day: string;

【讨论】:

以上是关于如何在 LoopBack 4 模型中指定没有时间的日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何在等待中指定 Typescript Mongoose 模型类型

如何在 Xcode 4 中指定命令行参数?

如何在 Kohana 3 ORM 关系中指定两个键

AnyLogic:有没有办法在优化实验中指定决策变量数组?

DJANGO:当主键不是“id”时如何在夹具中指定主键

在运行时在 Django 中指定关系动词?