I'm studying AngularJS and Firebase and I'm playing with a simple ChatApp, just to understand the code.
My Firebase DB structure is like this:
"chat": {
"messages": {
"chat1": { [ list of messages ] },
"chat2": { [ list of messages ] }
},
"rooms": {
"chat1": {
"users": {
"user1": true,
"user2": true
}
},
"chat2": {
"users": {
"user2": true,
"user3": true
}
}
}
}
Due to Firebase protection Rules I can't add chat link in the user node, than I necessary have to do a Firebase query to retrieve chat rooms for user, using orderByChild()
query on App Start Up.
Using Firebase is simple than I can retrieve all chat using:
var chatLink = firebase.database().ref('chat/rooms');
chatLink
.orderByChild('users/' + userId)
.equalTo(true)
.once('value', function(chatSnap){
/* Do Some Stuff Here */
});
Every thing work well, but I'm receiving a warning in the console:
FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "users/{userId}" at /chat/rooms to your security rules for better performance
Searching on the web, I found that for variable orderByChild()
query, I can user .indexOn: .value
in my Firebase Rules.
I've tried to add this Rule:
{
"rules": {
"chat": {
"rooms": {
".indexOn": ".value"
}
}
}
}
But I'm still receive always that warning. How can i fix it?
Thank you very much!