2

我想让我的前端将值的哈希值推送到后端。散列可以有任何(JSON 合法)键,但每个键的值必须适合特定的模式。想一想:

extended: {
  tubers: {
    potato: {weight: 1, cost: 2},
    yam: {weight: 1, cost: 1}
  }
}

所以扩展对象有一个块茎字段。tubers 字段有很多键,但每个值都必须有一个整数的权重和成本。

我似乎无法将其映射到我的正常 Joi 对象架构框架中。

4

1 回答 1

5

您可以使用Joi.object().pattern()验证未知密钥:

var schema = {
    extended: {
        tubers: Joi.object().pattern(/^\w+$/, Joi.object().keys({
            weight: Joi.number().required(),
            cost: Joi.number().required()
        }).unknown())
    }
};

如果您不想允许除weightand以外的其他键,请cost删除.unknown().

于 2015-05-08T20:23:35.503 回答