2016-04-21 94 views
2

我正在使用Hapijs框架並使用Joi進行驗證,我試圖通過Joi驗證來驗證JSON文件。我已經定義了模式,並希望根據我的模式檢查JSON文件是否具有字段。在hapijs中檢查空字符串Joi

某些字符串字段可以爲空。在我的模式文件中,當我將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

感謝您的回覆Cuthbert ..但我想從文件中讀取模式..就像在我的文章中顯示的那樣。我已經使用module.exports,然後定義架構。有什麼辦法可以在模式中使用.allow。 – user3656330

+0

想要使用JSON格式的原因是什麼?這看起來不像'joi.compile()'所要求的語法。你有什麼理由不能按照我在答案中給出的方式導出joi對象? – Cuthbert

+0

你使用的是enjoi嗎? https://www.npmjs.com/package/enjoi – Cuthbert