我正在尝试通过AngularFire和Angular.js使用Firebase实现一些简单的使用注册。我正在使用SimpleLogin工具来管理用户。我可以创建用户就可以了。
var firebaseRef = new Firebase(FIREBASE_URL);
var simpleLogin = $firebaseSimpleLogin(firebaseRef);
var firebaseUsersRef = new Firebase(FIREBASE_URL + 'users');
var firebaseUsers = $firebase(firebaseUsersRef);
var myObject = {
register: function(user) {
var myDate = new Date().getTime();
return simpleLogin.$createUser(
user.email, user.password)
.then(function(regUser) {
var userInfo = {
date: myDate,
md5: regUser.md5_hash,
firstname: user.firstname,
lastname: user.lastname,
email: user.email
}
firebaseUsers.$push(userInfo).then(function(ref) {
userInfo.uid = ref.name();
$rootScope.currentUser = userInfo;
});
}); //push user
}, //register
奇迹般有效。为了在用户登录时获得此信息,我尝试在$ rootscope上实现事件处理程序。我希望它搜索我存储的uid,然后让我记录正确的用户信息。
$rootScope.$on('$firebaseSimpleLogin:login', function (e, authUser) {
var query = $firebase(firebaseRef.startAt(authUser.uid).endAt(authUser.uid));
console.log(query);
$location.path('/meetings');
});
为了使用startAt和endAt,我必须建立$ priority。尝试时,出现错误提示我不能使用任何特殊字符。所以那永远都行不通。我并不真正在乎这些数据的存储方式,我只想获取数据的索引,以便可以找到合适的用户。
多亏了弗兰克(Frank),我得以找到正确的方法来做到这一点。为了使自己的用户对象可搜索,我可以使用simpleLogin对象中的uid。所以我的注册功能是这样的:
var firebaseRef = new Firebase(FIREBASE_URL);
var simpleLogin = $firebaseSimpleLogin(firebaseRef);
var myObject = {
register: function(user) {
var myDate = new Date().getTime();
return simpleLogin.$createUser(user.email, user.password)
.then(function(regUser) {
var userInfo = {
date: myDate,
md5: regUser.md5_hash,
firstname: user.firstname,
lastname: user.lastname,
email: user.email
}
firebaseUsers.$set(regUser.uid, userInfo);
}); //add user
}, //register
} //my Object
使用set而不是push,我可以将注册用户的uid存储到对象中,然后传递要添加的内容作为第二个参数。现在,我的数据库将按照uid来组织用户,可以通过url访问。
然后,当用户登录时,Firebase将与已认证的用户一起引发登录事件,我可以捕获并使用该事件将当前用户添加到整个应用程序可访问的$ rootScope中。
$rootScope.$on('$firebaseSimpleLogin:login', function (e, authUser) {
var ref = new Firebase(FIREBASE_URL + '/users/' + authUser.uid);
var user = $firebase(ref).$asObject();
user.$loaded().then(function() {
$rootScope.currentUser = user;
});
$location.path('/meetings');
});
感谢您为我指明了正确的方向弗兰克。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句