node.js - 使用 Joi 验证嵌套对象

标签 node.js api hapi.js joi

如何使用 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()
            })
        })
    }

我不确定我遗漏了什么。

最佳答案

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

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

Node.js 会因此抛出异常:

TypeError: Joi.integer is not a function

如果您将其更改为 string()number() 一切都会正常工作:

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

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

关于node.js - 使用 Joi 验证嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46284691/

相关文章:

node.js - 用于回发的 Bot 框架事件?

api - 如何找到我网站的所有 API?

ruby - Ruby win32api 和 win32ole 有什么区别?

node.js - 使用服务器方法进行内存缓存中的 Hapi 不接受对象作为参数

node.js - 如何从自定义镜像安装Electron

javascript - 使用 Jade 变量附加环境变量

node.js - React 服务端渲染事件监听器未附带

image - 将来自 tumblr 的照片帖子嵌入到外部网站

node.js - Hapi.js 按顺序加载插件

javascript - 使用 Glue 定义 Auth 策略