【发布时间】:2020-05-18 06:58:14
【问题描述】:
我必须使用 Joi 验证库来验证 API 输入并发送输出。
我说过创建了如下模式:
import Joi from '@hapi/joi'
const eventSchema = Joi.object({
title: Joi.string()
.min(7)
.max(50)
.required()
.error(() => Error('Event title has to be least 7 and max 50 characters.')),
description: Joi.string()
.min(10)
.max(400)
.required()
.error(() => Error('Event description has to be least 10 and max 400 characters.')),
place: Joi.string()
.min(6)
.max(40)
.required()
.error(() => Error('Event place has to be least 6 and max 40 characters.'))
})
export default eventSchema
当我验证这个时,我得到了预期的验证错误。这里的问题是我不知道哪个字段真正导致了错误。我想知道这一点,因为我想准确地在导致错误的字段旁边显示错误,而不是在表单顶部显示通用验证消息。
const isValid = eventSchema.validate()
if (isValid.error) {
const fieldNameWhichCauseError = ???
return {
errors: { [fieldNameWhichCauseError]: isValid.error.message }
}
}
// Everything looks good save to db
// ...etc.
上面的代码现在可以知道 fieldNameWhichCauseError = ??? 中的字段名称。有人能帮帮我吗?我还没有看到有人做这样的场景。我也没有在文档中找到。我有很多架构和验证,这确实阻碍了我在 UI 中的适当位置显示错误。
【问题讨论】:
标签: javascript node.js hapijs joi