带有节点js的角度js与$ http.post一起发出

时间:2017-10-31 07:20:25

标签: javascript angularjs node.js

我的angularjs $ http.post .then方法永远不会被执行。虽然服务器工作正常并返回我希望它返回的内容,但是不执行.catch方法。

这是我的节点js控制器,对电子邮件进行验证

module.exports.add = function(req, res, next) {
   var user = new User(req.body);
   User.find({email:req.body.email},function(err,doc){
       if(err) {
           {
               err.status = 406;
               return next(err);
           }
       }
           if(doc.length){
               return res.status(409).json({message: 'Email already exist'});
           }
       else {
       user.save(function(err, doc) {
           if (err) {
               err.status = 406;
               return next(err);
           }
           return res.status(201).json({message: 'Your account has been created successfully. Please login to continue.'});
       }) //end of user.save
   } //end of else
  });
};

这是我的角度控制器

quizApp.controller("createAcc",['$scope','$http','$location','$timeout','signup',function ($scope,$http,$location,$timeout,signup) {
     $scope.createAcc = function () {
        signup.createAcc($scope.fName, $scope.email, $scope.password)
            .then(function () {
                console.log("it happened");
            })
            .catch(function (err) {
                 if(response.status === 409){
                     $scope.emailExist = true;
                }
                console.log("12345");

            });
    }
}


]);

这是我的角色服务

quizApp.factory('signup', ['$http',function ($http) {
    return {
        createAcc : function (fName,email,password) {
            var data = {fName:fName,email:email,password:password};
            return $http.post('/api/v1/user/add',data)
        }
        }
}]);

所以现在的问题是,我的服务器正在进行正确的验证并向我发送409状态,即电子邮件存在,但在我的angularjs控制器中,.then函数或.catch函数永远不会运行。在控制台中,它只会抛出409的错误,但.then函数或.catch函数永远不会被执行。我也尝试过.success(函数successCallback()},函数errorCallback(){}),它也不起作用。我不明白我做错了什么,但是Postman(应用程序)的一切都运行正常,但是我无法在这里调试问题。我想我的角度代码我做错了,有人可以告诉我为什么我的.then和.catch函数永远不会被执行?

1 个答案:

答案 0 :(得分:0)

NVL注入工厂

更改

$q

['$http','$q',function ($http) {