我想我几乎找到了问题的解决方案,但我仍然需要一些调整。
我有一个@RestController
,我在其中执行此操作来检查用户是否存在
@RequestMapping(value = "/email")
public Boolean getByEmail(@RequestBody String email) {
String userId;
try {
User user = userDao.findByEmail(email);
userId = String.valueOf(user.getId());
LOGGER.info(user.toString());
LOGGER.info(userId);
}
catch (Exception ex) {
LOGGER.info("email does not exist");
return false;
}
LOGGER.info("Email does exist");
return true;
}
在 AngularJs 中我做了这样的事情:
(function () {
'use strict';
angular
.module('app')
.controller('RegisterController', RegisterController);
RegisterController.$inject = ['UserService', '$http' ];
function RegisterController(UserService, $http) {
var vm = this;
vm.register = register;
vm.error="This is a sample Error";
function register() {
testEmail();
console.log(vm.user)
console.log(("email must been verified before this"))
//if the testEmail returns false Create a user else give an error
// vm.dataLoading = true;
// UserService.Create(vm.user)
}
function testEmail(){
console.log("Check email")
console.log(vm.user.email)
console.log($http.post('/email',vm.user.email))
return $http.get('/email',vm.user.email)
}
}
})();
我基本上想做的是找到一种方法让 testEmail
函数返回 true
或 false
?
最佳答案
我建议像其中一条评论所述研究异步验证器,但如果您不喜欢该选项,这里有一些更多信息。
问题在于,由于 testEmail 函数发出异步 ajax 请求,因此调用后面的行将在 ajax 请求完成之前运行。您需要等待请求完成。请参阅下面的示例:
function register() {
//test email returns a promise object, you need to wait until it is resolved, passing the response from the server to the callback
testEmail().then(function(response){
//replace this with the appropriate response
if(response.data.valid){
console.log(vm.user)
console.log(("email must been verified before this"))
//if the testEmail returns false Create a user else give an error
// vm.dataLoading = true;
// UserService.Create(vm.user)
}
});
}
关于angularjs - 如何使用 Spring Boot 检查电子邮件是否已存在于 AngularJS 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32845630/