我正在构建一个聊天应用程序,其中有GroupConversations
和GroupMessages
。按照一些Firestore YouTube视频的示例,我选择了通过以下方式来构造数据:
GroupConversation的ID是与该GroupConversation关联的GroupMessages集合的ID。然后在该文档的内部应该是一个名为Messages
的新集合,其中包含文档。
这有意义还是我使事情复杂化了?我似乎无法在Swift代码中创建该Messages
集合或对其进行任何设置
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
答案 0 :(得分:1)
您没有正确建立文档的路径。文档路径始终在集合名称和文档名称之间交替。要在子集合中建立文档的路径,它将去到collection / document / subcollection / document。看起来您已经混合了要构建的字符串中的最后两个元素。
我认为,如果您使用方法而不是尝试构建字符串来构建文档,则更难出错。像这样:
db
.collection("GroupMessages")
.document(groupConvo.documentId)
.collection("Messages")
.document(doc.documentId)
.setData(...)