Firebase queryEquals возвращает ноль результатов Firebase Realtime - PullRequest
0 голосов
/ 02 октября 2018

Я знаю, что этот вопрос задавался ранее, но я получил ответы на многие вопросы и до сих пор не понял этого.

У меня есть приложение чата, поэтому я храню свои сообщения чата вбаза данных в реальном времени (не 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 - это последнее средство для меня.Я бы предпочел не делать всю эту работу, если только то, что я спрашиваю, буквально невозможно без загрузки всей истории чата и фильтрации на клиенте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...