rawCheckAsync
Создает действие валидации raw-проверки.
const Action = v.rawCheckAsync<TInput>(action);
Обобщения
TInputextends any
Параметры
action(context: Context<TInput>) => MaybePromise<void>
Объяснение
С помощью rawCheckAsync можно свободно проверять входные данные с помощью пользовательского action и при необходимости добавлять ошибки.
Возвращаемое значение
ActionRawCheckActionAsync<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
Утилиты
Асинхронные
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/