Angularjs 查询Firebase中唯一的用户名
我是Firebase的新手。我正在开发一个angular+firebase应用程序,在用户使用电子邮件+密码注册后,他可以在提交个人资料表单后保存用户名 在此之前,我想知道应用程序中是否有用户提交了用户名。此aproch不起作用,因为scope.used始终为false:Angularjs 查询Firebase中唯一的用户名,angularjs,firebase,Angularjs,Firebase,我是Firebase的新手。我正在开发一个angular+firebase应用程序,在用户使用电子邮件+密码注册后,他可以在提交个人资料表单后保存用户名 在此之前,我想知道应用程序中是否有用户提交了用户名。此aproch不起作用,因为scope.used始终为false: scope.used = false; scope.updateProfile = function(profile) { var ref = new Firebase(
scope.used = false;
scope.updateProfile = function(profile) {
var ref = new Firebase(FIREBASE_URL + '/users');
ref.orderByChild("username").equalTo(profile.username).on("child_added", function(snapshot) {
if (currentUser != snapshot.key()) {
scope.used = true;
}
});
if (scope.used) {
console.log('username already exists');
}
};
有没有其他方法可以实现这一目标
编辑(我自己回答)
这种方法在以下方面起作用:
scope.used = false;
var userRef = new Firebase(FIREBASE_URL + '/users/' + currentUser);
scope.updateProfile = function(profile) {
var ref = new Firebase(FIREBASE_URL + '/users');
ref.orderByChild("username").equalTo(profile.username).on("child_added", function(snapshot) {
if (currentUser != snapshot.key()) {
scope.used = true;
}
});
ref.orderByChild("username").equalTo(profile.username).once("value", function(snap) {
//console.log("initial data loaded!", Object.keys(snap.val()).length === count);
if (scope.used) {
console.log('username already exists');
scope.used = false;
}else{
console.log('username doesnt exists, update it');
userRef.child('username').set(profile.username);
}
});
};
看见您可能还想添加您的解决方案作为自我回答。好的,我这样做了,但是,您能否解释我或向我传递任何链接,解释为什么在本例中,两种方法之间共享scope.used?