2016-04-21 13 views
2

Ich benutze Hapijs Framework und Joi für Validierungen verwenden, versuche ich, JSON-Datei mit Joi-Validierung zu validieren. Ich habe ein Schema definiert und wollte überprüfen, ob die JSON-Datei Felder gemäß meinem Schema enthält.Überprüfung der leeren Zeichenfolge in hapijs Joi

Einige der String-Felder können leer sein. In meiner Schemadatei, als ich min als 0 definiert habe, heißt es, dass name ein Pflichtfeld ist.

ich unter Schema verwenden und aus einer Datei zu lesen

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

Wie dieses Schema ändern, die leere Zeichenkette nimmt.

Antwort

2

Wenn Sie leere Zeichenfolgen zulassen möchten, müssen Sie sie explizit mit joi.string().allow('') zulassen.

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

Danke für Ihre Antwort Cuthbert .. Aber ich wollte Schema aus einer Datei lesen .. wie das ist in meinem Beitrag gezeigt. Ich habe module.exports benutzt und dann das Schema definiert. Gibt es eine Möglichkeit, passen .allow in Schema .. – user3656330

+0

Was ist der Grund dafür, es in diesem JSON-Format wollen? Das sieht nicht so aus, wie es von 'joi.compile()' benötigt wird. Gibt es einen Grund, warum Sie das Joi-Objekt nicht einfach so exportieren konnten, wie ich es in meiner Antwort angegeben habe? – Cuthbert

+0

Verwenden Sie enjoi? https://www.npmjs.com/package/enjoi – Cuthbert

Verwandte Themen