【问题标题】:Server side validation in Express compatible with a single page Angular applicationExpress 中的服务器端验证与单页 Angular 应用程序兼容
【发布时间】: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


    【解决方案1】:

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

    服务器

    res.json(500, errors)
    

    客户

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

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 2012-09-26
      • 1970-01-01
      • 2016-08-01
      相关资源
      最近更新 更多