pipeAsync
Добавляет к схеме конвейер, который может проверять и преобразовывать входные данные.
const Schema = v.pipeAsync<TSchema, TItems>(schema, ...items);
Обобщения
TSchemaextends BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>TItemsextends readonly (PipeItem<any, unknown, BaseIssue<unknown>> | PipeItemAsync<any, unknown, BaseIssue<unknown>>)[]
Параметры
schemaTSchemaitemsTItems
Пояснение
pipeAsync создаёт изменённую копию заданной schema, содержащую конвейер для подробной проверки и преобразования. Она асинхронно передаёт входные данные через items в указанном порядке, и каждый элемент может проверять и изменять их.
Поскольку
pipeAsyncвозвращает схему, которую можно использовать в качестве первого аргумента другого конвейера, можно вложить несколько вызововpipeAsync, чтобы расширить проверку и преобразование.
pipeAsync прерывает выполнение и помечает выходные данные как нетипизированные, если ошибки были собраны до попытки выполнить схему или действие преобразования в качестве следующего элемента конвейера, чтобы предотвратить неожиданное поведение.
Возвращаемое значение
SchemaSchemaWithPipeAsync<readonly [TSchema, ...TItems]>
Примеры
В следующих примерах показано, как можно использовать pipeAsync. Дополнительные примеры и пояснения см. в руководстве по конвейерам.
Схема сохранённого адреса электронной почты
Схема для проверки сохранённого адреса электронной почты.
import { isEmailPresent } from '~/api';
const StoredEmailSchema = v.pipeAsync(
v.string(),
v.nonEmpty('Please enter your email.'),
v.email('The email is badly formatted.'),
v.maxLength(30, 'Your email is too long.'),
v.checkAsync(isEmailPresent, 'The email is not in the database.')
);
Схема нового пользователя
Схема для проверки и преобразования сведений о новом пользователе в строку.
import { isUsernameUnique } from '~/api';
const NewUserSchema = v.pipeAsync(
v.objectAsync({
firstName: v.pipe(v.string(), v.nonEmpty(), v.maxLength(30)),
lastName: v.pipe(v.string(), v.nonEmpty(), v.maxLength(30)),
username: v.pipeAsync(
v.string(),
v.nonEmpty(),
v.maxLength(30),
v.checkAsync(isUsernameUnique, 'The username is not unique.')
),
}),
v.transform(
({ firstName, lastName, username }) =>
`${username} (${firstName} ${lastName})`
)
);
Связанные API
Следующие API можно использовать вместе с pipeAsync.
Схемы
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
Методы
assert, config, fallback, forward, getDefault, getDefaults, getFallback, getFallbacks, is, keyof, message, omit, parse, parser, partial, pick, required, safeParse, safeParser, unwrap
Действия
args, base64, bic, brand, bytes, check, checkItems, codePoints, creditCard, cuid2, decimal, description, digits, domain, email, emoji, empty, endsWith, entries, everyItem, excludes, filterItems, findItem, finite, flavor, graphemes, gtValue, guard, hash, hexadecimal, hexColor, imei, includes, integer, ip, ipv4, ipv6, isbn, isrc, isoDate, isoDateTime, isoDateTimeSecond, isoTime, isoTimeSecond, isoTimestamp, isoWeek, ksuid, length, ltValue, mac, mac48, mac64, mapItems, maxBytes, maxCodePoints, maxEntries, maxGraphemes, maxLength, maxSize, maxValue, maxWords, metadata, mimeType, minBytes, minCodePoints, minEntries, minGraphemes, minLength, minSize, minValue, minWords, multipleOf, nanoid, nonEmpty, notBytes, notCodePoints, notEntries, notGraphemes, notLength, notSize, notValue, notValues, notWords, octal, parseJson, partialCheck, rawCheck, rawTransform, readonly, reduceItems, regex, returns, rfcEmail, safeInteger, size, slug, someItem, sortItems, startsWith, stringifyJson, title, toCamelCase, toKebabCase, toLowerCase, toMaxValue, toMinValue, toPascalCase, toSnakeCase, toUpperCase, transform, trim, trimEnd, trimStart, ulid, url, uuid, value, values, words
Утилиты
Асинхронные операции
arrayAsync, awaitAsync, checkAsync, customAsync, exactOptionalAsync, fallbackAsync, forwardAsync, getDefaultsAsync, getFallbacksAsync, intersectAsync, lazyAsync, looseObjectAsync, looseTupleAsync, mapAsync, nonNullableAsync, nonNullishAsync, nonOptionalAsync, nullableAsync, nullishAsync, objectAsync, objectWithRestAsync, optionalAsync, parseAsync, parserAsync, partialAsync, partialCheckAsync, rawCheckAsync, rawTransformAsync, recordAsync, requiredAsync, safeParseAsync, safeParserAsync, setAsync, strictObjectAsync, strictTupleAsync, transformAsync, tupleAsync, tupleWithRestAsync, undefinedableAsync, unionAsync, variantAsync
© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/pipeAsync/