hapi.js - 使用 Joi/Hapi,如何验证哈希中所有键的条目?

标签 hapi.js joi

我想允许我的前端将值的哈希值推送到后端。哈希可以具有任何(JSON 合法)键,但每个键的值必须符合特定模式。可以这样想:

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

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

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

最佳答案

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

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

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

关于hapi.js - 使用 Joi/Hapi,如何验证哈希中所有键的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30131402/

相关文章:

javascript - Node.js 版本冲突

node.js - 如何在 Hapijs 中传输 JSON 请求?

node.js - Joi 验证时间字段

javascript - 验证两个属性是否相等

javascript - JOI如何允许空格和标点符号

node.js - JOI 报告 "AssertionError: Invalid schema content"

javascript - 当两个值中的任何一个存在或缺失时进行 Joi 验证

javascript - Hapi.js 子域路由到插件

node.js - Kue UI (Express) 与 Hapi.JS API-Server 并行

javascript - 在 Hapi.js 中提供静态 JavaScript 文件不起作用