How to create an index on a child property of an object array in Firebase

404 views
Skip to first unread message

Alexsander Khitev

unread,
Oct 15, 2016, 2:46:21 PM10/15/16
to Firebase Google Group
Hello everyone! I want to make a query by one parameters from message model, For example it is "isIncoming". I tried several diffirent method to make rules in firebase databases but I didn't get a good result. Please help me!

My chats data

{
  "chats" : {
    "4IUCN3fUKla1lqAZ96XYdGdyC0w1" : {
      "MUFCybYybyQFCPhHvYk0SMdwevs1" : {
        "-KU81MpAfP2SVMEYAJi0" : {
          "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
          "date" : "2016-10-15 15:50:24 +0000",
          "isIncoming" : true,
          "message" : "I'm ",
          "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
        },
        "-KU82-Sko8sSOh0YNRg9" : {
          "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
          "date" : "2016-10-15 15:53:11 +0000",
          "isIncoming" : true,
          "message" : "The ",
          "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
        },
        "-KU8202pZ85J5kBLVM2V" : {
          "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
          "date" : "2016-10-15 15:53:13 +0000",
          "isIncoming" : true,
          "message" : "Jf",
          "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
        }
      },
      "conversations" : {
        "MUFCybYybyQFCPhHvYk0SMdwevs1" : {
          "-KU82xIOW1J7ZRdp1xbh" : {
            "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
            "date" : "2016-10-15 15:57:20 +0000",
            "isIncoming" : true,
            "message" : "Hello Marina! ",
            "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
          },
          "-KU82yUwRnJoV8f4HiAW" : {
            "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
            "date" : "2016-10-15 15:57:25 +0000",
            "isIncoming" : true,
            "message" : "How are you?",
            "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
          }
        }
      }
    },
    "MUFCybYybyQFCPhHvYk0SMdwevs1" : {
      "4IUCN3fUKla1lqAZ96XYdGdyC0w1" : {
        "-KU81MpB1GKtf2VK2KDI" : {
          "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
          "date" : "2016-10-15 15:50:24 +0000",
          "isIncoming" : false,
          "message" : "I'm ",
          "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
        },
        "-KU82-Sko8sSOh0YNRgA" : {
          "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
          "date" : "2016-10-15 15:53:11 +0000",
          "isIncoming" : false,
          "message" : "The ",
          "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
        },
        "-KU8202qgcjosZQ4Ig6d" : {
          "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
          "date" : "2016-10-15 15:53:13 +0000",
          "isIncoming" : false,
          "message" : "Jf",
          "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
        }
      },
      "conversations" : {
        "4IUCN3fUKla1lqAZ96XYdGdyC0w1" : {
          "-KU82xIOW1J7ZRdp1xbi" : {
            "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
            "date" : "2016-10-15 15:57:20 +0000",
            "isIncoming" : false,
            "message" : "Hello Marina! ",
            "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
          },
          "-KU82yUxc_DFSVFkv0Gb" : {
            "conversationID" : "4IUCN3fUKla1lqAZ96XYdGdyC0w1",
            "date" : "2016-10-15 15:57:25 +0000",
            "isIncoming" : false,
            "message" : "How are you?",
            "senderID" : "MUFCybYybyQFCPhHvYk0SMdwevs1"
          }
        }
      }
    }
  }

My rules 

   "chats": {
           "$uid": {
        "conversations": {
                    "$uid": {
                        ".indexOn": "isIncoming"
                                         }
             }  
                       } 
        

My ref in an app 

        let commonChatsRef = FIRDatabase.database().reference().child("chats").child(currentUser.id).child("conversations").queryOrdered(byChild: "isIncoming").queryEqual(toValue: false)



Kato Richardson

unread,
Oct 17, 2016, 4:44:27 PM10/17/16
to Firebase Google Group

Hi Alexsander,

You haven’t posted any errors or outcome here, or your security rules, so it’s hard to guess what you’re running into.

At first glance, your query is pointed at /chats/<user id>/conversations, however, the data is actually stored in /chats/<user id>/<some other id>/conversations.

☼, Kato


--
You received this message because you are subscribed to the Google Groups "Firebase Google Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firebase-talk+unsubscribe@googlegroups.com.
To post to this group, send email to fireba...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/firebase-talk/47be5fd2-0034-46e2-b9da-e1b82466129b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--

Kato Richardson | Developer Programs Eng | kato...@google.com | 775-235-8398

Reply all
Reply to author
Forward
0 new messages