2017-09-18 187 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