javascript - 使用 Joi 和 nodeJS 验证嵌套对象中的唯一键对

标签 javascript node.js validation joi

我有以下 JSON 结构:

{
  key1: "value1",
  key2: "value2",
  transactions: [
    {
      receiverId: '12341',
      senderId: '51634',
      someOtherKey: 'value'
    },
    {
      receiverId: '97561',
      senderId: '46510',
      someOtherKey: 'value'
    }
  ]
}


我正在尝试编写一些 Joi 代码来验证 transactions 数组中的每个对象都是唯一的,即 receiverId 和 senderId 的组合只存在一次。交易数组中可以有可变数量的元素,但总是至少有 1 个。
有什么想法吗?

最佳答案

您可以使用array.unique

const array_uniq_schema = Joi.array().unique((a, b) => a.receiverId === b.receiverId && a.senderId === b.senderId);

因此,对于整个对象,架构将是(假设所有属性都是必需的):
 const schema = Joi.object({
    key1: Joi.string().required(),
    key2: Joi.string().required(),
    transactions: array_uniq_schema.required(),
 });

关于javascript - 使用 Joi 和 nodeJS 验证嵌套对象中的唯一键对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53243306/

相关文章:

javascript - 替换字符串的特定部分

node.js - Node Sass No Binding for Your current environment

java - 使用 Spring 3.1 在 JSP 页面中不显示表单验证错误

javascript - 如何从路由更改 Ember JS 中字段的属性

javascript - 如何在循环中设置状态?

javascript - 如何将 Json 数据格式化为所需的格式并遍历循环?

python - 在 Django Rest Framework 中使用嵌套序列化程序进行序列化程序字段验证

node.js - 将 TypeScript 应用程序发布到 Azure 时找不到模块 '../lib/tsc.js'

node.js - 如何在 Insomnia GET 请求中设置 req.params?

c - 使用 atoi() 对整数进行输入验证