我的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函数永远不会被执行?
答案 0 :(得分:0)
将NVL
注入工厂
更改
$q
到
['$http','$q',function ($http) {