Angularjs 查询Firebase中唯一的用户名

Angularjs 查询Firebase中唯一的用户名,angularjs,firebase,Angularjs,Firebase,我是Firebase的新手。我正在开发一个angular+firebase应用程序,在用户使用电子邮件+密码注册后,他可以在提交个人资料表单后保存用户名 在此之前,我想知道应用程序中是否有用户提交了用户名。此aproch不起作用,因为scope.used始终为false: scope.used = false; scope.updateProfile = function(profile) { var ref = new Firebase(

我是Firebase的新手。我正在开发一个angular+firebase应用程序,在用户使用电子邮件+密码注册后,他可以在提交个人资料表单后保存用户名

在此之前,我想知道应用程序中是否有用户提交了用户名。此aproch不起作用,因为scope.used始终为false:

       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?