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 });