如何在Firestore中将数据存储到具有相同ID的多个集合中?

时间:2018-09-02 15:59:57

标签: ios swift firebase google-cloud-firestore

我有要存储在多个集合中的数据,并应用了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'

我应该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以将setData()与三个现有DocumentReference对象一起使用,并将包含数据的字典传递给字典,以添加到集合中。除了已经在做的事情,您不需要在CollectionReference上调用其他任何方法。

let data = ... // your dictionary of data
allPosts.setData(data)