Проверка вложенных объектов с помощью Joi

Как проверить этот объект с помощью joi? Я использую Joi с Hapi API.

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

Я не уверен, где я пропускаю вещи.


person Andre Mendes    schedule 18.09.2017    source источник
comment
Не могли бы вы уточнить, что вы имеете в виду под не работает?   -  person Damaged Organic    schedule 18.09.2017
comment
@KidBinary эй, ну, это просто не запускает мое приложение node.js. проблема в этой проверке, так как у меня есть много других, но не вложенных объектов, подобных этому.   -  person Andre Mendes    schedule 18.09.2017
comment
Он выдает исключение Node.js, ошибку проверки Joi или просто игнорирует полезную нагрузку, которую вы пытаетесь проверить с ее помощью?   -  person Damaged Organic    schedule 18.09.2017
comment
@KidBinary я исправил phoNumber, но все еще не работает. Я использую его на своем маршрутизаторе Hapi.   -  person Andre Mendes    schedule 18.09.2017


Ответы (1)


В вашем коде есть ошибка, в этой строке:

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

Из-за этого Node.js выдает исключение:

TypeError: Joi.integer не является функцией

Если вы измените это на string() или number(), все будет работать как надо:

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

Это совершенно очевидно, поэтому мне просто интересно, как вы это пропустили? Все остальное с вашей схемой Joi кажется в порядке.

person Damaged Organic    schedule 18.09.2017
comment
Рад помочь : ) - person Damaged Organic; 18.09.2017