2017-09-18 7 views
1

Comment valider cet objet en utilisant joi? Im utilisant Joi avec Hapi api.Validation des objets imbriqués avec 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": "" 
     } 
    } 
    } 

J'ai essayé de faire comme ceci, mais cela ne fonctionne pas. Quelle est la bonne façon de faire cela?

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() 
      }) 
     }) 
    } 

Je ne sais pas où je manque des choses.

+0

Pourriez-vous préciser ce que vous entendez par "ne fonctionne pas"? – Nevertheless

+0

@KidBinary hey, eh bien il ne suffit pas d'exécuter mon application node.js. le problème est dans cette validation puisque j'en ai beaucoup d'autres mais pas d'objets imbriqués comme celui-ci. –

+0

Il déclenche une exception Node.js, une erreur de validation Joi ou ignore simplement la charge utile que vous essayez de valider avec lui? – Nevertheless

Répondre

1

Il y a une erreur dans votre code, à cette ligne:

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

Les Node.js throws Exception à cause de cela:

TypeError: Joi.integer is not a function

Si vous changez que soit string() ou tout number() fonctionnera comme il se doit:

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

C'est assez évident Je me demande juste comment tu l'as manqué? Tout le reste avec votre schéma Joi semble bien.

+0

c'est bien maintenant. : D –

+0

Content de vous aider :) – Nevertheless