CreateUser 函数根本不是 运行
CreateUser function not running at all
我正在尝试在 Firebase 中实现用户创建,但出于某种原因完全跳过了执行此操作的功能。我以前做过一千次,但现在我无法弄清楚为什么这个函数根本不是 运行,这让我发疯所以希望有人能指出我在这里做错了什么。
我有一个连接到表单的按钮,当您单击此按钮时,它会调用一个 validate
函数:
<button ng-click="validate()">Submit</button>
$scope.validate = function() {
$scope.error = validation.validateSignup($scope.user);
$scope.error ? false : $scope.error = dbEntry.createNewUser($scope.user);
}
它将调用工厂方法,如果没有返回错误,它将调用 dbEntry
工厂的 createNewUser
方法。
指向引用、同步引用或身份验证对象的工厂。后者是我用来创建新用户的。请参阅此 here.
的文档
forumApp.factory('fbRef', ['$firebase', '$firebaseAuth', function($firebase, $firebaseAuth) {
return {
getReference: function(path) {
return path ? new Firebase('https://blabla.firebaseio.com/' + path) : new Firebase('https://forum-app.firebaseio.com/');
},
getSyncedReference: function(path) {
return $firebase(new Firebase('https://blabla.firebaseio.com/' + path));
},
getAuthObj: function() {
return $firebaseAuth(new Firebase('https://blabla.firebaseio.com/'));
}
};
}]);
示例 user
传递给 createNewUser
方法的对象:
$scope.user = {
firstname: 'Chris',
lastname: 'Ferguson',
age: '21',
country: 'Sweden',
displayName: 'BadBoy13',
email: 'badboy13@gmail.com',
password: 'mothercow',
confirmedPassword: 'mothercow',
isTermsAccepted: true
}
包含将在 Firebase 数据库中注册新帐户的 createNewUser
方法的工厂。
UPDATED FACTORY - 它现在 运行s 但当我尝试将任何内容插入数据库时,我在 switch 语句中一直得到默认值 "Connection error- try again later":
forumApp.factory('dbEntry', ['$firebase', '$firebaseAuth', 'fbRef', function($firebase, $firebaseAuth, fbRef) {
return {
/**
* Create a new user account in Firebase
*
* @param Object $user
* User details
*
* @return String
* If error -> error message
* If successful -> success message
*/
createNewUser: function(user) {
return fbRef.getAuthObj().$createUser({
email: user.email,
password: user.password
}).then(function(userData) {
console.log(userData);
return 'Registration successful';
}).catch(function(error) {
switch (error.code) {
case 'EMAIL_TAKEN':
return 'Email already registered';
default:
return 'Connection error - try again later';
}
});
}
};
}]);
有人能指出这里有什么问题吗?
createNewUser
dbEntry
工厂的方法是 return 承诺,但在你的中你没有 return 承诺。 fbRef.getAuthObj().$createUser({})
方法应该 return 来自工厂。
代码
forumApp.factory('dbEntry', ['$firebase', '$firebaseAuth', 'fbRef', function($firebase, $firebaseAuth, fbRef) {
return {
createNewUser: function(user) {
//returning promise that will return to method who is accessing it.
return fbRef.getAuthObj().$createUser({
email: user.email,
password: user.password
}).then(function(userData) {
console.log(userData);
return 'Registration successful';
}).catch(function(error) {
switch (error.code) {
case 'EMAIL_TAKEN':
return 'Email already registered';
default:
return 'Connection error - try again later';
}
});
}
};
}]);
控制器
$scope.validate = function() {
$scope.error = validation.validateSignup($scope.user);
$scope.error ? false : $scope.error = dbEntry.createNewUser($scope.user);
}
希望对您有所帮助。谢谢。
我正在尝试在 Firebase 中实现用户创建,但出于某种原因完全跳过了执行此操作的功能。我以前做过一千次,但现在我无法弄清楚为什么这个函数根本不是 运行,这让我发疯所以希望有人能指出我在这里做错了什么。
我有一个连接到表单的按钮,当您单击此按钮时,它会调用一个 validate
函数:
<button ng-click="validate()">Submit</button>
$scope.validate = function() {
$scope.error = validation.validateSignup($scope.user);
$scope.error ? false : $scope.error = dbEntry.createNewUser($scope.user);
}
它将调用工厂方法,如果没有返回错误,它将调用 dbEntry
工厂的 createNewUser
方法。
指向引用、同步引用或身份验证对象的工厂。后者是我用来创建新用户的。请参阅此 here.
的文档forumApp.factory('fbRef', ['$firebase', '$firebaseAuth', function($firebase, $firebaseAuth) {
return {
getReference: function(path) {
return path ? new Firebase('https://blabla.firebaseio.com/' + path) : new Firebase('https://forum-app.firebaseio.com/');
},
getSyncedReference: function(path) {
return $firebase(new Firebase('https://blabla.firebaseio.com/' + path));
},
getAuthObj: function() {
return $firebaseAuth(new Firebase('https://blabla.firebaseio.com/'));
}
};
}]);
示例 user
传递给 createNewUser
方法的对象:
$scope.user = {
firstname: 'Chris',
lastname: 'Ferguson',
age: '21',
country: 'Sweden',
displayName: 'BadBoy13',
email: 'badboy13@gmail.com',
password: 'mothercow',
confirmedPassword: 'mothercow',
isTermsAccepted: true
}
包含将在 Firebase 数据库中注册新帐户的 createNewUser
方法的工厂。
UPDATED FACTORY - 它现在 运行s 但当我尝试将任何内容插入数据库时,我在 switch 语句中一直得到默认值 "Connection error- try again later":
forumApp.factory('dbEntry', ['$firebase', '$firebaseAuth', 'fbRef', function($firebase, $firebaseAuth, fbRef) {
return {
/**
* Create a new user account in Firebase
*
* @param Object $user
* User details
*
* @return String
* If error -> error message
* If successful -> success message
*/
createNewUser: function(user) {
return fbRef.getAuthObj().$createUser({
email: user.email,
password: user.password
}).then(function(userData) {
console.log(userData);
return 'Registration successful';
}).catch(function(error) {
switch (error.code) {
case 'EMAIL_TAKEN':
return 'Email already registered';
default:
return 'Connection error - try again later';
}
});
}
};
}]);
有人能指出这里有什么问题吗?
createNewUser
dbEntry
工厂的方法是 return 承诺,但在你的中你没有 return 承诺。 fbRef.getAuthObj().$createUser({})
方法应该 return 来自工厂。
代码
forumApp.factory('dbEntry', ['$firebase', '$firebaseAuth', 'fbRef', function($firebase, $firebaseAuth, fbRef) {
return {
createNewUser: function(user) {
//returning promise that will return to method who is accessing it.
return fbRef.getAuthObj().$createUser({
email: user.email,
password: user.password
}).then(function(userData) {
console.log(userData);
return 'Registration successful';
}).catch(function(error) {
switch (error.code) {
case 'EMAIL_TAKEN':
return 'Email already registered';
default:
return 'Connection error - try again later';
}
});
}
};
}]);
控制器
$scope.validate = function() {
$scope.error = validation.validateSignup($scope.user);
$scope.error ? false : $scope.error = dbEntry.createNewUser($scope.user);
}
希望对您有所帮助。谢谢。