Ron Royston Ron Royston - 1 year ago 124
Javascript Question

Firebase v3 Query by Grandchild

When registering new email/password type users, I need to make user that the

that they enter does not already exist in my Realtime Database before calling
. So I need a query. I need to get a list of all
's in my
branch. I am confused as to how to gather this for each
which is denoted by each users auth.uid.

What would the retrieval look like? I am thinking something like:

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

but I know that
is not valid. Can someone help me with this?

"users" : {
"6mJb9vtpbDelyyjirKEf6sSEj8h1" : {
"name" : "",
"provider" : "password",
"displayName" : "Joe"
"T7D7qEOPPHXjKSzglKheGJDQNkE3" : {
"name" : "",
"provider" : "password",
"displayName" : "Jane"
"kTG9R0V4aXYsogQfgF633KFYtzV2" : {
"name" : "Andre3000",
"provider" : "",
"displayName" : "Andre"

Answer Source

You'd use Firebase queries for that:

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')

Don't forget to define an index on users:

  "rules": {
    "users": {
      ".indexOn": "displayName"
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download