如何处理angularjs中的服务器端错误

时间:2014-08-01 17:11:13

标签: javascript angularjs

如何使用angularjs处理服务器端错误。我看到了一些解决方案,比如How to properly handle server side errors?,但它们并不适合我的需要/也许我需要改变我的失败行为。请注意,我正在处理服务器端的路由。

我的问题是,在服务器端,我运行了几个mongo查询,我将返回到我的路由。请注意,这些查询也可能会生成自定义错误(例如字段的长度不合适)。 E.g:

服务器端

ingredientController

controller.getIngredient = function(cb) {
    Ingredient.findOne({},cb)
}

在我的路由处理程序中,我调用了这个函数:

function(req, res) {
ingredientController.getIngredient(function(err, data) {
    if (err)
        res.json({
            error: 1
        })
    else
        res.json({
            error: 0,
            data: 'success'
        })
})
}

请注意,json中也可能包含错误消息。

客户端

productServices.getIngredient()
        .success(function(result) {
             //error should be handled here e.g. result.error === 1
             $scope.ingredient = result.data
        })
        .error(function(err) {
             console.log('error ' + err)
        })

我做得对吗?如果是,那么我应该如何向用户提供一些反馈。

1 个答案:

答案 0 :(得分:1)

一种解决方案是创建一个显示错误消息的服务和指令。在主模板中加载指令,然后使用该服务进行更新。

另一种选择是使用angular-growl库:

angular.module('MyModule').service(
  'MyService',
  function (growl) {
    this.getDatabaseResult = function () {
      getResult().then(
        function (result) {
          growl.addSuccessMessage('Success!');
        },
        function (error) {
          growl.addErrorMessage('Get Database Result Error: ' + error);
        }
      );
    }
  }
);