enum

joi enum typescript Валидация значения - из перечислимого типа, один из нескольких енамов

Пусть у нас есть некий enum ColumnType и мы хотим ограничить его знчениями некое поле field, тогда вариант :

export const valuesByFieldDtoSchema = joi.object({
 field: joi.string().allow(ColumnType).required(),

-- работать не будет.

Рабочим решением является вариант:

export const valuesByFieldDtoSchema = joi.object({
  field: joi
    .string()
    .valid(...Object.values(ColumnType))
    .required(),

Выбор из нескольких enum-ов

joi enum typescript Работа с перечислимым типом

Можно попробовать что-то вроде:

import * as joi from 'joi';

permission: joi
     .string()
     .required()
     .valid(...Object.values(SomeMyEnum)),

nestjs joi Отладка валидации входных данных для контроллеров

Просто уберем джои из аннотаций и проведем проверку в теле метода контроллера, например:

nestjs Контроллер, GET парамертры и параметры URL - пример

Получать GET-параметры и параметры из замого адреса запроса можно так (пример контроллера):

import { Controller, Get, Param, Query } from '@nestjs/common';

@Controller('test')
export class TestController {

  @Get('queryparams/:id')
  getTestGetparams(@Param('id') id, @Query('type') type): string {
    return `Url param: ${id}, Get param type = ${type}`;
  }
}

Валидация Get параметров с помощью joi (пример для Enum)

Пример:

typescript Тип как один из ключей, именно свойств перечислимого типа (Enum). Пример определения

Вот так можно определить тип keyOfMyType, который означает "является ключом енама MyType":

export enum MyType {
  ONE = 'r1',
  TWO = 'p2',
  THREE = 'i3',
}

export type keyOfMyType = keyof typeof MyType;
Subscribe to RSS - enum