【问题标题】:Validating nested objects with Joi使用 Joi 验证嵌套对象
【发布时间】:2018-02-27 07:25:32
【问题描述】:

如何使用 joi 验证这个对象?我将 Joi 与 Hapi api 一起使用。

    {
    "email":"rambo@gmail.com",
    "password":"abc123",
    "active":"",
    "details": {
        "firstName": "Rambo",
        "lastName": "Comando",
        "phoneNumber": "5554446655",
        "billing":{
            "firstName": "",
            "lastName": "",
            "phoneNumber": "",
            "address": "",
            "adress2": "",
            "postalCode": "",
            "city": "",
            "state": "",
            "country": "",
            "stripeId": ""
        }
     }
  }

我试过这样做,但它不起作用。这样做的正确方法是什么?

payload: {
        email: Joi.string().email().required(),
        password: Joi.string().alphanum().min(8).max(30).required(),
        active: Joi.boolean(),
        details: Joi.object().keys({
            firstName: Joi.string().max(50),
            lastName: Joi.string().max(50),
            phoneNumber: Joi.number().integer().min(10).max(11),
            billing : Joi.object().keys({
                firstName: Joi.string().max(50),
                lastName: Joi.string().max(50),
                phoneNumber: Joi.string().integer().min(10).max(11),
                address: Joi.string().alphanum(),
                adress2: Joi.string().alphanum(),
                postalCode: Joi.string().alphanum(),
                city: Joi.string(),
                state: Joi.string(),
                country: Joi.string(),
                stripeId: Joi.string().alphanum()
            })
        })
    }

我不确定我错过了什么。

【问题讨论】:

  • 您能否具体说明“不工作”的含义?
  • @KidBinary 嘿,它根本无法运行我的 node.js 应用程序。问题出在此验证中,因为我还有许多其他对象,但没有像这样的嵌套对象。
  • 它会引发 Node.js 异常、Joi 验证错误或只是忽略您尝试使用它验证的有效负载?
  • @KidBinary 我修复了 phoNumber 但仍然无法正常工作。我在我的 Hapi 路由器上使用它。

标签: node.js api hapijs joi


【解决方案1】:

您的代码中有错误,在这一行:

phoneNumber: Joi.string().integer().min(10).max(11),

Node.js 会因此抛出异常:

TypeError:Joi.integer 不是函数

如果您将其更改为string()number(),一切都会正常运行:

phoneNumber: Joi.number().min(10).max(11),

这很明显,所以我只是想知道,你是怎么错过的?您的 Joi 架构的其他一切似乎都很好。

【讨论】:

  • 很高兴为您提供帮助:)
猜你喜欢
  • 2016-02-19
  • 2021-04-15
  • 2019-04-14
  • 2019-04-30
  • 1970-01-01
  • 2020-02-21
  • 2019-03-23
  • 2020-06-01
  • 1970-01-01
相关资源
最近更新 更多