【发布时间】:2014-05-13 19:25:44
【问题描述】:
我想执行服务器端验证,最好使用 expressValidator。保存资源时,我会检查它是否有效。如果它无效,我应该返回什么?
有一些例子: http://blog.ijasoneverett.com/2013/04/form-validation-in-node-js-with-express-validator/
https://github.com/ctavan/express-validator
不幸的是,我无法从中找出答案。
在 Angular 中,我使用的是 $resource 服务。当我进行保存时,出现验证错误,服务器应如何将其发回?请注意,这是一个单页应用程序。
另外,我应该如何在客户端处理这个问题?这在技术上是一个成功的电话吗?
请,我不是在寻找任何即时、ajax、检查每个字段的解决方案。我想提交保存,如果有问题,我想返回错误以便 Angular 可以处理它们。这不需要是完美的解决方案,只是让我走上正轨。
我目前没有以特殊方式处理 Angular 代码: 控制器:
$scope.saveTransaction = function (transaction) {
transactionData.saveTransaction(transaction);
}
服务
saveTransaction: function(transaction) {
return resource.save(transaction);
}
服务端代码如下:
app.post('/api/transactions', function (req, res) {
var transaction;
req.assert('amount', 'Enter an amount (numbers only with 2 decimal places, e.g. 25.50)').regex(/^\d+(\.\d{2})?$/);
var errors = req.validationErrors();
var mapped = req.validationErrors(true);
if (mapped) {console.log("MAPPED")};
//console.log(mapped);
if(!errors) {
console.log("Passed");
transaction = new TransactionModel({
date: req.body.date,
description: req.body.description,
amount: req.body.amount
});
transaction.save(function (err) {
if (!err) {
return console.log("created");
} else {
return console.log("err");
}
return res.send(transaction);
})
}
else {
console.log("Errors");
res.send(errors);
// res.render('Transaction', {
// title: 'Invalid Transaction',
// message: '',
// errors: errors
// });
}
});
【问题讨论】:
标签: javascript node.js angularjs validation express