Как мне создать новую коллекцию? - PullRequest
0 голосов
/ 20 ноября 2018

Я создаю приложение чата, в котором есть GroupConversations и GroupMessages. Следуя примеру некоторых видео с Firestore на YouTube, я решил структурировать свои данные следующим образом:

Идентификатор GroupConversation - это идентификатор коллекции GroupMessages, связанной с этим GroupConversation. Затем внутри этого документа должна быть новая коллекция с именем Messages, в которой хранятся документы.

Имеет ли это смысл или я слишком усложняю вещи? Кажется, я не могу создать эту коллекцию Messages или установить для нее что-либо в своем коде Swift

GroupConversations
    id
    title
    desc
    memberIds

GroupMessages 
    GroupConversationID
        createdAt: Date // just because I need a key and a document?
        Messages (new collection)
            Message1
            Message2
            Message3

Спасибо

Редактировать: добавлен код Swift

        let db = Firestore.firestore()
        var data: [String: Any] = [
            "text": title,
            "senderUsername": username,
            "createdAt": Date(),
            "updatedAt": Date()
        ]

        let creationData: [String: Any] = [
            "text": "Group Created",
            "createdAt": Date()
        ]

        let doc = db.collection("GroupMessages").addDocument(data: creationData)
        db.document("GroupMessages/\(groupConvo.documentId)/\(doc.documentID)/messages").setData(data) { error in
            if error == nil {
                completion()
            }
        }

В моей консоли я вижу новый объект GroupMessage, созданный, но не подколлекцию этого GroupMessage с именем messages

1 Ответ

0 голосов
/ 20 ноября 2018

Вы неправильно строите путь к документу. Пути к документам всегда чередуются между именами документов и коллекций. Чтобы построить путь к документу во вложенной коллекции, он должен пойти в collection / document / subcollection / document. Похоже, вы перепутали два последних элемента в строящейся строке.

На мой взгляд, сложнее ошибиться, если вы строите документ с использованием методов, а не пытаетесь создать строку. Примерно так:

db
    .collection("GroupMessages")
    .document(groupConvo.documentId)
    .collection("Messages")
    .document(doc.documentId)
    .setData(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...