2017-06-25 58 views
2

我需要驗證NodeJS應用程序中的某個對象。我已經使用了一個很棒的庫express-validator,它工作的很完美,但是現在我需要驗證不同的對象,不僅僅是請求,而且就表達驗證器利用validator庫來說,它反過來不支持字符串類型以外的類型。json對象的NodeJS驗證庫

我發現不同的變種一樣JsonschemaAjv

他們提供了強大的功能,但我需要能夠設置錯誤消息,並不僅僅是捕獲異常或返回對象解析它。 就像那個

var schema = { 
    "id": "/SimplePerson", 
    "type": "object", 
    "properties": { 
     "name": {"type": "string", "error": "A name should be provided"}, 
     "address": {"$ref": "/SimpleAddress"}, 
     "votes": {"type": "integer", "minimum": 1} 
    } 
    }; 

所以我可以爲每個屬性設置錯誤消息。

是否有任何現有的解決方案來實現此功能?

可能的解決方案

我發現了一個偉大的圖書館JSEN它提供了必要的功能。

回答

1

一種解決方案是使用穰庫: https://github.com/hapijs/joi

這個庫是很好的維護,使用和提供大量的靈活性和可能採取的行動。

例:

const Joi = require('joi'); 

const schema = Joi.object().keys({ 
    name: Joi.string()..error(new Error('A name should be provided')), 
    address: Joi.ref('$SimpleAddress'), 
    votes: Joi.number().min(1), 
}); 

// Return result. 
const result = Joi.validate(yourObject, schema);