2016-04-21 2 views
2

Я использую фреймворк Hapijs и используя Joi для проверки, я пытаюсь проверить файл JSON с помощью проверки Joi. Я определил схему и хотел проверить, имеет ли файл JSON поля в соответствии с моей схемой.проверка пустой строки в hapijs Joi

Некоторые из полей String могут быть пустыми. В моем файле схемы, когда я определил min как 0, он говорит, что поле name обязательно.

Я использую ниже схемы и чтение из файла

module.exports = { 
    "name": { "type": "string", "min": 0, "max": 30}, 
    "age": { "type": "number", "min": 1, "max": 36}, 
    "dob": { "type": "string", "min": 0, "max":100 } 
} 

Как изменить эту схему, которая принимает пустую строку.

ответ

2

Если вы хотите разрешить пустые строки, вам необходимо явно разрешить их с помощью joi.string().allow('').

var joi = require('joi'); 

var schema = joi.object().keys({ 
    name: joi.string().min(0).allow('').allow(null), 
    age: joi.number().min(1).max(36), 
    dob: joi.string().min(0).max(100) 
}); 

var obj = { 
    name: '', 
    age: '18', 
    dob: '11/11/2998' 
}; 

var result = joi.validate(obj, schema); 

console.log(JSON.stringify(result, null, 2)); 
+0

Спасибо за ваш ответ Катберт .. Но я хотел прочитать схему из файла .. как показано в моем сообщении. Я использовал module.exports, затем определяю схему. Есть ли способ подгонки .allow в схеме .. – user3656330

+0

В чем причина желания в этом формате JSON? Это не похоже на синтаксис, требуемый 'joi.compile()'. Есть ли причина, по которой вы просто не могли экспортировать объект joi, как я дал в своем ответе? – Cuthbert

+0

Вы используете enjoi? https://www.npmjs.com/package/enjoi – Cuthbert