2017-09-18 147 views
1

如何使用joi验证此对象?我用Hapi api使用Joi。与Joi验证嵌套对象

{ 
    "email":"[email protected]", 
    "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() 
      }) 
     }) 
    } 

林不知道我在哪里丢失东西了。

+0

请问您能指定“不工作”是什么意思吗? – Nevertheless

+0

@KidBinary嘿,它只是不会运行我的node.js应用程序。问题是在这个验证,因为我有很多其他人,但没有这样的嵌套对象。 –

+0

它会引发Node.js异常,Joi验证错误或者仅仅忽略你想用它验证的有效载荷? – Nevertheless

回答

1

。在你的代码中的错误,在这一行:

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), 

这很明显s o我只是想知道,你是如何错过它的?你的Joi模式的其他一切似乎都没问题。

+0

现在好了。 :D –

+0

很高兴帮助:) – Nevertheless