我想创建一个 express 中间件,看起来像这样:
function validate (options) {
var defaultOptions = {...}
, validations = _.extend(defaultOptions, options);
return validate (req, res, next) {
/* Use some sort of validation framework where I can pass `validations` into*/
next(someErrors || null)
}
}
我都看过node-validator使用中间件选项以及 tracery但是它们看起来都不像您可以将“规则集”传递给它们并让它们根据提供的输入运行规则。
是否有人对如何使用这些模块或我尚未找到的另一个模块执行此操作有任何建议?我必须自己动手吗?
更新
这确实是为了验证表单帖子。我知道不会有一个中间件可以覆盖整个站点的所有帖子。这将仅用于某些路线。我想要可重用的中间件,因为我们正在制作具有通用路由的 API,并期望我们希望以类似方式验证的通用表单主体,并且可以选择在每个 API 的基础上对其进行调整。
最佳答案
使用 JSON 架构
在不了解您要检查的具体内容的情况下,我认为基于 JSON schema 的工具可以很好地为您服务。 JSON 模式指定多种 validation rules .
Node 模块示例:
我根据对 "json schema" on Nipster 的简单搜索创建了这个列表。 .我发现 Nipster 是一个很好的工具,可以快速了解特定任务的好模块,因为它还包括项目的 fork 数量和 github 星号作为流行度的衡量标准,这反过来又经常说明模块的质量和成熟度.当然不能盲目,而是作为进一步研究的开始。
我希望实际上并非所有 JSON 模式的模块都支持所有验证规则,因此我认为您应该首先列出您实际需要(或希望将来可用)的规则类型,然后缩小范围您的选择基于此。
有一个 official test suite for JSON schema tools .您可能需要寻找宣传此套件合规性的模块。
不使用 JSON 架构
关于node.js - Express Req.Body 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717677/