我想执行服务器端验证,最好使用expressValidator。保存资源时,我会检查它是否有效。如果它无效我应该返回什么?
有例子: http://blog.ijasoneverett.com/2013/04/form-validation-in-node-js-with-express-validator/
https://github.com/ctavan/express-validator
不幸的是,我无法从中找出答案。
在Angular中,我使用的是$ resource服务。当我进行保存并且存在验证错误时,服务器应如何发送回来?请注意,这是一个单页面应用程序。
另外,我应该如何处理客户端?这在技术上是否成功?
请,我不是在寻找任何即时,ajax,检查每个字段的解决方案。我想提交save,如果有问题,我想返回错误,以便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
// });
}
});
答案 0 :(得分:1)
你可以发送和处理" 更好"错误:
SERVER
res.json(500, errors)
客户端
resource.save(tran).then(function(){
//it worked
},
function(response) {
//it did not work...
//see response.data
});