2017-09-18 7 views
1

Wie dieses Objekt mit joi zu validieren? Ich benutze Joi mit Hapi API.Validieren von verschachtelten Objekten mit 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": "" 
     } 
    } 
    } 

Ich habe versucht, so, aber es funktioniert nicht. Was ist der richtige Weg, dies zu tun?

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

Ich bin nicht sicher, wo ich vermisse Dinge.

+0

Könnten Sie bitte angeben, was Sie unter „funktioniert nicht“? – Nevertheless

+0

@KidBinary hey, gut es einfach gewohnt meine node.js app laufen. Das Problem liegt in dieser Validierung, da ich viele andere, aber keine verschachtelten Objekte wie dieses habe. –

+0

Es wirft Node.js Ausnahme, Validierungsfehler Joi oder einfach ignorieren die Nutzlast Sie damit zu bestätigen sind versuchen? – Nevertheless

Antwort

1

ist ein Fehler im Code ist, an dieser Linie:

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

Die Node.js wirft Ausnahme, weil es:

TypeError: Joi.integer is not a function

Wenn Sie das ändern, um entweder string() oder number() alles funktioniert wie es sollte:

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

Es ist ziemlich offensichtlich s Ich frage mich nur, wie du es verpasst hast? Alles andere mit deinem Joi-Schema scheint in Ordnung zu sein.

+0

ist es jetzt gut. : D –

+0

Froh, zu helfen:) – Nevertheless

Verwandte Themen