使用 Joi/Hapi,如何为所有键验证散列中的条目?
Using Joi/Hapi, how can one validate the entries in a hash, for all keys?
我想让我的前端将值的散列推送到后端。散列可以有任何(JSON-合法的)键,但每个键的值必须符合特定的模式。可以这样想:
extended: {
tubers: {
potato: {weight: 1, cost: 2},
yam: {weight: 1, cost: 1}
}
}
所以扩展对象有一个tubers字段。 tubers 字段有很多键,但每个值都必须有一个整数的权重和成本。
我似乎无法将其映射到我的普通 Joi 对象架构框架中。
您可以使用 Joi.object().pattern()
来验证未知密钥:
var schema = {
extended: {
tubers: Joi.object().pattern(/^\w+$/, Joi.object().keys({
weight: Joi.number().required(),
cost: Joi.number().required()
}).unknown())
}
};
如果您不想使用 weight
和 cost
以外的其他键,请删除 .unknown()
.
我想让我的前端将值的散列推送到后端。散列可以有任何(JSON-合法的)键,但每个键的值必须符合特定的模式。可以这样想:
extended: {
tubers: {
potato: {weight: 1, cost: 2},
yam: {weight: 1, cost: 1}
}
}
所以扩展对象有一个tubers字段。 tubers 字段有很多键,但每个值都必须有一个整数的权重和成本。
我似乎无法将其映射到我的普通 Joi 对象架构框架中。
您可以使用 Joi.object().pattern()
来验证未知密钥:
var schema = {
extended: {
tubers: Joi.object().pattern(/^\w+$/, Joi.object().keys({
weight: Joi.number().required(),
cost: Joi.number().required()
}).unknown())
}
};
如果您不想使用 weight
和 cost
以外的其他键,请删除 .unknown()
.