2017-09-18 2 views
1

joiを使用してこのオブジェクトを検証する方法は?ハピApiでJoiを使っているIm。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), 

これは非常に明らかです私はちょうどあなたがそれを逃した疑問に思っていますか?あなたのJoiのスキーマを持つすべてのものは問題ないようです。

+0

その良い今。 :D –

+0

うれしいこと:) – Nevertheless

関連する問題