Express中的服务器端validation与单页Angular应用程序兼容

我想执行服务器端validation,最好用expressValidator。 保存资源时,我检查一下是否有效。 如果不是有效的,我应该返回什么?

有例子: http : //blog.ijasoneverett.com/2013/04/form-validation-in-node-js-with-express-validator/

https://github.com/ctavan/express-validator

不幸的是,我无法从中得出答案。

在Angular中,我正在使用$ resource服务。 当我做了一个保存,并有一个validation错误,服务器应该如何发送回来? 请注意,这是一个单页面应用程序。

另外,我应该如何处理客户端? 这在技术上是成功的电话吗?

请,我不寻找任何瞬间,阿贾克斯,检查每场解决scheme。 我想提交保存,如果有问题,我想返回错误,以便Angular可以处理它们。 这不需要是完美的解决scheme,只是让我走上正轨。

目前我没有用特殊的方式处理Angular代码:Controller:

$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, eg 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 // }); } }); 

你可以发送和处理“ 更好 ”的错误:

服务器

 res.json(500, errors) 

客户

 resource.save(tran).then(function(){ //it worked }, function(response) { //it did not work... //see response.data });