Spec-Zone.ru › Valibot

rawCheckAsync

Создает действие валидации raw-проверки.

const Action = v.rawCheckAsync<TInput>(action);

Обобщения

  • TInput extends any

Параметры

  • action (context: Context<TInput>) => MaybePromise<void>

Объяснение

С помощью rawCheckAsync можно свободно проверять входные данные с помощью пользовательского action и при необходимости добавлять ошибки.

Возвращаемое значение

  • Action RawCheckActionAsync<TInput>

Примеры

В следующих примерах показано, как можно использовать rawCheckAsync.

Добавление схемы пользователей

Схема объекта, которая гарантирует, что в группу включены только пользователи, которых в ней еще нет.

Это действие валидации rawCheckAsync добавляет ошибку для каждого недопустимого имени пользователя и перенаправляет ее с помощью path в соответствующее вложенное поле.

import { isAlreadyInGroup } from '~/api';

const AddUsersSchema = v.pipeAsync(
  v.object({
    groupId: v.pipe(v.string(), v.uuid()),
    usernames: v.array(v.pipe(v.string(), v.nonEmpty())),
  }),
  v.rawCheckAsync(async ({ dataset, addIssue }) => {
    if (dataset.typed) {
      await Promise.all(
        dataset.value.usernames.map(async (username, index) => {
          if (await isAlreadyInGroup(username, dataset.value.groupId)) {
            addIssue({
              received: username,
              message: 'The user is already in the group.',
              path: [
                {
                  type: 'object',
                  origin: 'value',
                  input: dataset.value,
                  key: 'usernames',
                  value: dataset.value.usernames,
                },
                {
                  type: 'array',
                  origin: 'value',
                  input: dataset.value.usernames,
                  key: index,
                  value: username,
                },
              ],
            });
          }
        })
      );
    }
  })
);

Связанные API

Следующие API можно комбинировать с rawCheckAsync.

Схемы

any, array, bigint, blob, boolean, custom, date, enum, exactOptional, file, function, instance, intersect, lazy, literal, looseObject, looseTuple, map, nan, never, nonNullable, nonNullish, nonOptional, null, nullable, nullish, number, object, objectWithRest, optional, picklist, promise, record, set, strictObject, strictTuple, string, symbol, tuple, tupleWithRest, undefined, undefinedable, union, unknown, variant, void

Утилиты

isOfKind, isOfType

Асинхронные

arrayAsync, awaitAsync, customAsync, exactOptionalAsync, forwardAsync, intersectAsync, lazyAsync, looseObjectAsync, looseTupleAsync, mapAsync, nonNullableAsync, nonNullishAsync, nonOptionalAsync, nullableAsync, nullishAsync, objectAsync, objectWithRestAsync, optionalAsync, pipeAsync, recordAsync, setAsync, strictObjectAsync, strictTupleAsync, tupleAsync, tupleWithRestAsync, undefinedableAsync, unionAsync, variantAsync

© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/rawCheckAsync/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API