Я знаю, что этот вопрос задавался ранее, но я получил ответы на многие вопросы и до сих пор не понял этого.
У меня есть приложение чата, поэтому я храню свои сообщения чата вбаза данных в реальном времени (не firestore) в 'messages / {chatId} / {messageId}'
Таким образом, все дети в 'messages / {chatId}' принадлежат чату с соответствующим идентификатором.
messages:
chatId1:
messageId1:
message: "hello"
type: "text"
messageId2:
projectId: "projectId1"
type: "audio"
messageId3:
message: "how are you"
type: "text"
chatId2:
...etc...
Я хочу запросить все сообщения в определенном чате с идентификатором проекта, равным «проекту1».
Я пробовал:
let messageRef = ref.child("messages").child("chatId1")
let messageQuery = messageRef.queryOrdered(byChild:
"projectId").queryEqual(toValue: "projectId1")
messageQuery.observeSingleEvent(of: .value)...
и
let messageRef = ref.child("messages")
let messageQuery = messageRef.queryOrdered(byChild:
"chatId1/projectId").queryEqual(toValue: "projectId1")
messageQuery.observeSingleEvent(of: .value)...
И ни один из них не возвращает никаких результатов.Мне интересно, связано ли это с моей структурой данных.Перенос моих данных в Firestore - это последнее средство для меня.Я бы предпочел не делать всю эту работу, если только то, что я спрашиваю, буквально невозможно без загрузки всей истории чата и фильтрации на клиенте.