Как указать дату без времени в моделях loopback 4?

Я создаю API с помощью loopback-4, и в модели есть свойство под названием «день», которое является типом даты (столбец MySQL также имеет тип Date). Но я не могу публиковать в нем значения вроде «2019-09-09», потому что ему нужно что-то вроде «2019-09-09T12: 41: 05.942Z». Как я могу указать, что это должна быть дата (без времени)?

Я запутался, потому что вы можете передать "2019-09-09" в параметрах запроса (которые имеют тип date), но не в моделях.

В настоящее время у меня есть свойство в этой модели:

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

Ожидается: принять "2019-09-09" как значение

Фактически: 422: день должен соответствовать формату \ "дата-время \"


person Clemens Ertle    schedule 09.09.2019    source источник
comment
Почему бы просто не опубликовать это со временем? MySQL просто проигнорирует это, верно?   -  person Heretic Monkey    schedule 09.09.2019
comment
Я восстанавливаю старый API, который принимает день без времени. И было бы очень полезно, если бы API не имели большой разницы, поэтому старые клиенты, которые использовали старый API, все еще работали с новым.   -  person Clemens Ertle    schedule 09.09.2019


Ответы (2)


У меня была такая же проблема, и я решил ее, используя 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

person Rodolfo Catunta    schedule 16.03.2021

Тип следует изменить на 'date' вместо Date. Это позволит создать более гибкую схему дат:

@property({
    type: 'date',
    required: true,
    mysql: {
        columnName: 'day',
        dataType: 'date',
        dataLength: null,
        dataPrecision: null,
        dataScale: null,
        nullable: 'N',
    },
})
day: string;
person Rifa Achrinza    schedule 04.05.2020