【发布时间】:2013-12-17 00:20:41
【问题描述】:
我正在构建一个 Node.js 代理,目的是处理单个 POST 请求并将有效负载重定向到两个单独的端点。
假设我的 JSON 有效负载是:
{
"owner":"0ce856fa-f17f-11e2-9062-9b7910849bf4",
"comment":"My super cool comment!",
"photo":"0928536a-53c4-11e3-ba86-4b026f27c637"
}
我需要在代理端点上验证此有效负载在我发送它之前;这三个属性中的每一个都必须存在,并且owner 和photo 都必须匹配下面的正则表达式。如果他们没有通过验证,我需要处理错误并将带有适当错误代码的消息返回给用户。
我已经用Express 和Validator 设置了一个基本的Node.js 实例,就像这样来完成这个:
var url = require('url');
var request = require('request');
var express = require('express');
var check = require('validator').check,
sanitize = require('validator').sanitize;
var app = express();
app.use(express.json());
app.use(express.urlencoded());
app.all('*', function(req, res){
if (req.method == "POST")
{
try {
check(req.body.owner, {
is: "<owner> property of type [uuid] is required"
}).is(/\w{8}(?:-\w{4}){3}-\w{12}?/);
} catch (e) {
console.log(e);
res.json({"result":"failed","message":"Your payload didn't pass validation"});
}
}
});
app.listen(9000, function() {
console.log("Server initialized on port 9000");
});
问题:这一切都很好,而且非常适合单次验证(在本例中为 owner),但 catch 上的 e 不包含有关验证失败的属性——如果我设置了多个检查,我不知道哪一个失败或为什么失败。
如何设置一系列检查并检索我配置的自定义消息?它谈到在验证器自述文件中使用 req.onValidationError,但这看起来是前端验证,我不清楚如何(如果可能)将其与服务器端代码集成。
【问题讨论】: