NodeJS + AngularJS - 过了一段时间,我得到net :: ERR_CONNECTION_RESET

时间:2015-05-14 23:17:52

标签: javascript angularjs node.js

我在前端使用Express与NodeJS和AngularJS。点击这里后,在那里添加数据,在这里更新一些记录,在那里显示一个列表,我得到app.controller('GrupoController', ['$scope', '$location', '$routeParams', 'GrupoService', function ($scope, $location, $routeParams, GrupoService) { $scope.carregarDependenciasMeusGrupos = function () { GrupoService.carregarDependenciasMeusGrupos().then(function (result) { $scope.data = { grupos: result.Data }; }); }; $scope.editarGrupo = function(grupo) { $location.path('/editar-grupo/' + grupo.Id); }; }]); 。奇怪的是,在通过应用程序进行8或9次导航后,我收到了这个错误。在此之前,AJAX调用正常。

AngularJS控制器的一个示例:

function ajax(url, async, method, params, isJson, showLoading) {
    var deferred = $q.defer();
    $http.post('http://localhost:3000' + url, params).success(function(result) {

        if (result.StatusCode === 403) {
            $location.path('/login');
        } else {
            if (result.Success) {
                deferred.resolve(result);
            } else {
                deferred.reject();
                if (result.ErrorMessage) {
                    alert(result.ErrorMessage);
                }

                if (result.RedirectTo) {
                    window.location.href = result.RedirectTo;
                }
            }
        }
    }).error(function(err) {
        deferred.reject();
    });

    return deferred.promise;
}

还有一个HTTP调用示例:

app.post('/grupos/get-dependencies-to-grupos', app.ensureAuthentication, function(request, response, next) {
    query.openConnection().then(function(connection) {

        var gruposRepository = new repositories.Grupos(connection);
        gruposRepository.getDependenciasToGrupos(
            request.headers["authorization"], request.body.grupoId)
            .then(function(result) {
                response.json({ StatusCode: 200, Data: result });
        }, function(getDependenciesError) {
                response.json({ StatusCode: 500, ErrorMessage: getDependenciesError });
        });
   });
});

这是我用Express和NodeJS创建一个通过上面的AJAX方法调用的动作的方法:

    @Document(indexName = "documents", type = "customEntity", replicas = 0, shards = 5)
    public class CustomEntity implements Serializable{

        @Id
        private String Id;  
        @Field(type = FieldType.String)
        private String Field1;
        @Field(type = FieldType.Integer)
        private int Field2;
        @Field(type = FieldType.Object)  //not sure which annotation I should use
        private JsonObject exportJSON;   //gson object

        ...getters and setters...
    }

在8或9次导航后,应用程序突然停止工作。你们能帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果“getDependenciasToGrupos”承诺结果是错误,您没有“catch”会发生什么。

因此,如果它出错,则服务器(nodejs)没有http响应,浏览器在等待几个请求的响应后,会关闭连接。

尝试在promise中添加一个catch处理程序:

gruposRepository.getDependenciasToGrupos(
            request.headers["authorization"], request.body.grupoId)
            .then(function(result) {
                response.json({ StatusCode: 200, Data: result })

            .catch(function(error){response.json({ StatusCode: 503, Data: error})});