我想允许我的前端将值的哈希值推送到后端。散列可以具有任何(JSON合法)密钥,但每个密钥的值必须适合特定的模式。把它想象成:
extended: {
tubers: {
potato: {weight: 1, cost: 2},
yam: {weight: 1, cost: 1}
}
}
所以扩展对象有块茎字段。块茎区域有许多键,但每个值必须具有整数的权重和成本。
我似乎无法将其映射到我的普通Joi对象架构框架中。
答案 0 :(得分:5)
您可以使用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()
。