2012-12-02 45 views
12

我正在使用Node.js和Express.js编写应用程序。该应用程序具有(小)REST API,然后是Web前端。我使用MongoDb。在Express.js中POST数据JSON验证

对于API,我倾向于将POST数据发送到某个端点,然后执行处理或其他操作,然后将其转储到数据库中。但是,我有一些数据库模式,我想强制执行。我对我的POST数据执行特定结构有什么选择/最佳实践,所以我知道某些字段存在且具有特定类型。

如果可以在中间件级别完成这将是很好,但它不是必需的。人们通常为验证/模式实施做些什么?

回答

10

node-validator是你在找什么。你可以使用它作为一个独立的模块,这样

var check = require('validator').check; 

//Validate 
check('[email protected]').len(6, 64).isEmail();  //Methods are chainable 
check('abc').isInt();        //Throws 'Invalid integer' 

或者你可以用它建立在节点验证的中间件之上express-validator

+2

节点验证器和表达验证器都是很好的选择......但是,当前版本中的表达验证器缺少对**嵌套数据进行清理的能力...... –

+3

JSON验证都不是。 – Eric

+0

或者尝试http://indicative.adonisjs.com/,基准测试显示它比JOI更快 –

1

以下是各种JSON模式验证程序的最新benchmark

另外,为了获得最佳实践,您可能需要查看JSON-schema,它试图规定如何定义JSON对象的标准方法。