【发布时间】:2022-01-01 19:00:51
【问题描述】:
我的对象类型具有“翻译”属性,其中可以翻译成不同语言的字段被传递到特定的“语言”属性中,如下面的架构所示。
始终需要英文翻译,其余语言是可选的,我可以通过将.default(undefined) 设置为可选语言来实现这一点。
当存在一种语言并且对其内部字段的验证失败时,错误总是与字段本身相关联(在本例中为“名称”)。这种行为是意料之中的。
我还想实现但我不知道如何在“翻译”属性“en”不存在时显示错误并显示类似'An English translation is required' 的消息。
const categoryTranslationsSchema = object({
name: string()
.min(3, 'Must have at least 3 characters.')
.max(16, 'Cannot be longer than 16 characteres.')
.required('Must provide a name.')
})
const categorySchema = object({
slug: string()
.min(3, 'Must have at least 3 characters.')
.max(16, 'Cannot be longer than 16 characteres.')
.lowercase()
.trim()
.matches(/^(?![0-9-]+$)(?:[a-z]{2,}-?|[0-9]-?)+(?<!-)$/gm, 'Must start with a letter and can'
+ ' only contain letters, numbers or dashes (no more than one consecutive).')
.required('The slug is required.'),
translations: object({
en: categoryTranslationsSchema,
es: categoryTranslationsSchema
.default(undefined),
de: categoryTranslationsSchema
.default(undefined)
})
})
【问题讨论】:
标签: javascript validation yup