Гнездо JS: труба не применяется к параметрам связанного тела - PullRequest
1 голос
/ 15 марта 2020

Я пытаюсь найти достойный способ проверить схему по-разному для одного и того же объекта. Так я познакомился с группами validationOption из класса-валидатора .

Согласно параметру Nest JS Body do c, он гласит:

Также применяет трубы к параметру связанного тела.

I иметь модель события, имеющую свойство status . При создании события (POST - /events) статус необязательно , но при обновлении статуса (PATCH- /events/:id/status) его обязательно .

@Entity("events")
export class Events {
  @IsString({ groups: ["updateStatus"] })
  @IsNotEmpty({ groups: ["updateStatus"] })
  @IsOptional({ groups: ["createOne"] })
  @IsEnum(EventStatus, { groups: ["updateStatus"] })
  @Column({
    type: "enum",
    enum: EventStatus,
    default: EventStatus.OPEN
  })
  status: EventStatus;

  // ...other properties also.
}

Когда я сделал обновить запрос на статус, я предоставляю @Body с 'status' в качестве параметра и ValidationPipe в качестве опции канала.

@Patch('/:id/status')
async updateStatus(
    @Body(
         'status',
         new ValidationPipe({
             groups: ['updateStatus'],
         }),
    )
    status: EventStatus
) {
// Business logic.
}

Но с этим кодом, он не проверяет поле статуса в соответствии с упомянутой группой. Кто-нибудь знает, что я не так делаю. Любая помощь будет принята с благодарностью.

...