Firebase v3 Query by Grandchild

When registering new users such as "email / password", I need to make sure that the user they entered does not yet exist in my real-time database before making a call .createUserWithEmailAndPassword. So I need a request. I need to get a list of everyone displayNamein my thread users. I am confused how to compile this for each userone that is indicated by each auth.uid user.

What would a search look like? I think something like:

firebase.database().ref('users/' + allUserIds).equalTo('Joe');

but I know it is allUserIdsinvalid. Can someone help me with this?

{
  "users" : {
    "6mJb9vtpbDelyyjirKEf6sSEj8h1" : {
      "name" : "asdfs@asdf.com",
      "provider" : "password",
      "displayName" : "Joe"
    },
    "T7D7qEOPPHXjKSzglKheGJDQNkE3" : {
      "name" : "gfdsdf@hlkjh.com",
      "provider" : "password",
      "displayName" : "Jane"
    },
    "kTG9R0V4aXYsogQfgF633KFYtzV2" : {
      "name" : "Andre3000",
      "provider" : "google.com",
      "displayName" : "Andre"
    }
  }
}
+1
source share
2 answers

For this, you will use Firebase queries:

var users = firebase.database().ref('users');
var joes = users.orderByChild('displayName').equalTo('Joe');
joes.once('value', function(snapshot) {
  console.log('A Joe does '+(snapshot.exists()?'':'not ')+' exist')
});

users:

{
  "rules": {
    "users": {
      ".indexOn": "displayName"
    }
  }
}
+2

, . myApp.displayNameExists('Joe').

var myApp = (function() {
    var pub = {};
    pub.displayNameExists = function(name) {
            var users = firebase.database().ref('users');
            var duplicate = users.orderByChild('displayName').equalTo(name);
            duplicate.once('value').then(function(snap) {
                if (snap.val()) {
                    console.log('found. ask for new display name');
                } else {
                    console.log('name unique.  ok to write this user to db');
                }
            }, function(error) {
                // The Promise was rejected.
                console.error(error);
            });
        }
        //API
    return pub;
}());
0

Source: https://habr.com/ru/post/1650197/


All Articles