我有要存储在多个集合中的数据,并应用了Firebase Firestore的最佳实践。这是一个文档:
[
"postID": documentID,
"category": self.category,
"title": self.postTitle,
"description": self.postDescription,
"date": self.postDate,
"imageURL": self.postImageURL
]
我的想法是通过相同的ID将相同的文档存储在多个位置,以便更快地进行检索。这是我想要做的:
let documentID: String = db.collection("collectionName").document().documentID
let allPosts: DocumentReference = db.collection("allPosts").document(documentID)
let postsByDate: DocumentReference = db.collection("dates").document(self.postDate).collection(documentID)
let postsByCategory: DocumentReference = db.collection("category").document.(self.category).collection(documentID)
当我一次生成了documentID时,我不想addDocument
,而是想setData
,以便它不会将数据与另一个ID嵌套在一起,但是CollectionReference似乎没有setData
。
我什至尝试使用db.document("dates").setData()
,但这会引发错误:
Terminating app due to uncaught exception 'FIRInvalidArgumentException', reason: 'Invalid document reference. Document references must have an even number of segments, but dates has 1'
我应该怎么做?
答案 0 :(得分:1)
您可以将setData()与三个现有DocumentReference对象一起使用,并将包含数据的字典传递给字典,以添加到集合中。除了已经在做的事情,您不需要在CollectionReference上调用其他任何方法。
let data = ... // your dictionary of data
allPosts.setData(data)