Swift Firebase usando um índice não especificado

Então, eu tenho um aplicativo de bate-papo e meus dados são estruturados da seguinte maneira

chats : {
    chat12345 : {
        members : {
            user123 : true,
            user456 : true,
        }
    }
}

users : {
    user123 : {
        chats : {
            chat12345 : true
        }
    }
}

Então, quando eu quero pegar uma lista dos bate-papos do usuário, eu simplesmente uso:

let ref = dbref.child("users").child("user123").child("chats")
ref.observe(.childAdded, with: { (snapshot) -> Void in

    let chatRef = dbref.child("chats").child(snapshot.key)

        chatRef.observeSingleEvent(of: .value, with: { (chatSnapshot) in

            //I now have the chat object

        })
})

Então, como você vê acima, sou capaz de consultar cada ID de bate-papo para obter o objeto de bate-papo do Firebase com sucesso.

Mas também preciso observar alterações nas conversas das quais sou membro, por exemplo, se o título, a imagem ou outras propriedades do bate-papo mudarem.

Então, quando eu tento o seguinte:

let queryRef = chatRef.queryOrdered(byChild: "members/user123").queryEqual(toValue: true)

queryRef.observe(.childChanged, with: { (snapshot) -> Void in

})

Tecnicamente, isso funciona, mas o console gera o seguinte:

Using an unspecified index. Your data will be downloaded and filtered on the client. Consider adding ".indexOn": "members/user123" at /chats to your security rules for better performance.

Como modificar as regras de segurança ou minha consulta para observar alterações nos chats dos quais sou membro?

Aqui estão minhas regras de segurança agora:

"chats": {

    ".read": "auth != null",
    ".write": "auth != null",

    "$chatId" : {
        "members": {
          ".indexOn": ".value"
        }
    }

 },

questionAnswers(1)

yourAnswerToTheQuestion