【发布时间】:2019-06-25 07:48:33
【问题描述】:
我想在我的身体里用 Joi 做一个验证,但它似乎永远不会起作用,并且一直处于相同的状态。 所以,如果我用这个 POST
端点:/elasticSearch?eType=scroll&scroll=1h
正文:{}
应该会抛出错误,因为 eType 是 scroll,在这种情况下 scroll_id 需要是必需的,不能为空,不能为空。
即使我用这个POST
端点:/elasticSearch?eType=search&scroll=1h
正文:{}
应该会引发错误,因为 eType 是 search 并且在这种情况下 query 需要必填。
所以有了这些代码,
在一种情况下,它总是像没有验证一样通过,即使在我看来它们不应该通过,而在第二种情况下,我得到错误:需要查询,并且当我制作时一直需要 scroll_id打电话。
所以有人可以帮助我理解为什么这些验证是错误的?
谢谢
更新
默认情况下,如果我这样做:
body:
{
query:
Joi.alternatives()
.when(Joi.ref('$query.eType'),
{
is: Joi.string().equal('search'),
then: Joi.required()
}
),
scroll_id:
Joi.alternatives()
.when(Joi.ref('$query.eType'),
{
is: Joi.string().equal('scroll'),
then: Joi.required()
}
)
}
始终需要查询和滚动 ID。
【问题讨论】:
标签: javascript node.js validation hapijs joi