I am using the Firebase Realtime Database functions .orderByChild() and .equalTo() to fetch data nodes to be updated. However, I cannot seem to get any results back from my queries.
My database structure
{
  "4QEg0TWDbESiMX8Cu8cvUCm17so2" : {
    "-LmGtXsgJbAvVS8gv5-E" : {
      "createdAt" : 1565815876803,
      "message" : "Hello",
      "isSender" : false,
      "sender" : {
        "alias" : "",
        "name" : "Person A",
        "sid" : "mUO3DtYY2yRw3zkv4EmTlfldB3S2"
      },
      "sysStatus" : 0
    },
    "-LmGtt4nyuygG9B4s6__" : {
      "createdAt" : 1565815967746,
      "message" : "Hej!",
      "isSender" : true,
      "sender" : {
        "alias" : "",
        "name" : "Person B",
        "sid" : "4QEg0TWDbESiMX8Cu8cvUCm17so2"
      },
      "sysStatus" : 0
    },
    "-LmJxcvL_Y7JmojxPiiK" : {
      "createdAt" : 1565867281849,
      "isSender" : true,
      "message" : "111",
      "sender" : {
        "alias" : "",
        "name" : "Person B",
        "sid" : "4QEg0TWDbESiMX8Cu8cvUCm17so2"
      },
      "sysStatus" : 0
    }
  },
  "mUO3DtYY2yRw3zkv4EmTlfldB3S2" : {
    "222" : {
      "createdAt" : 1565867281849,
      "isSender" : true,
      "message" : "Test",
      "sender" : {
        "alias" : "",
        "name" : "Person A",
        "sid" : "mUO3DtYY2yRw3zkv4EmTlfldB3S2"
      },
      "sysStatus" : 0
    },
    "333" : { <-- This is one node I wish to fetch
      "createdAt" : 1565815967746,
      "isSender" : false,
      "message" : "123",
      "sender" : {
        "alias" : "",
        "name" : "Person B",
        "sid" : "4QEg0TWDbESiMX8Cu8cvUCm17so2" <-- This is the value I am trying to match
      },
      "sysStatus" : 0
    }
  },
  "rKNUGgdKqdP68T0ne6wmgJzcCE82" : {
    "-Lm_GTmNHyxqCqQl4D4Z" : { <-- This is one node I wish to fetch
      "createdAt" : 1566140917160,
      "isSender" : false,
      "message" : "Sesame",
      "sender" : {
        "alias" : "",
        "name" : "Person B",
        "sid" : "4QEg0TWDbESiMX8Cu8cvUCm17so2" <-- This is the value I am trying to match
      },
      "sysStatus" : 5
    }
  }
}
  
My code
dbRoot.child('messages')
.orderByChild('sid')
.equalTo(userId)
.once('value', (senderSnapshot) => {
  console.log('senderSnapshot', senderSnapshot.val())
  console.log('senderSnapshot amount', senderSnapshot.numChildren())
  senderSnapshot.forEach((sender)=>{
    //Do the work!
  })
})
The code logs
senderSnapshot null
senderSnapshot amount 0
I have manually checked that there are several nodes where "sid" is set to the "userId" I am looking for.
Why am I not getting any results back from my query?
It seems like I have to search dbRoot.child('messages/rKNUGgdKqdP68T0ne6wmgJzcCE82') to get my value. :/ (And then repeat the search for each user) How much extra data overhead would it be to download/collect all contacts and then loop thru each users contact?
 
     
    