Как сохранить данные в нескольких коллекциях с одинаковым идентификатором в Firestore? - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть данные, которые я хочу хранить в нескольких коллекциях, и применяю лучшие практики Firebase Firestore. Вот документ:

 [
       "postID": documentID,
       "category": self.category,
       "title": self.postTitle,
       "description": self.postDescription,
       "date": self.postDate,
       "imageURL": self.postImageURL
 ]

Моя идея заключается в том, чтобы хранить один и тот же документ в нескольких местах под одним и тем же идентификатором, чтобы его можно было быстрее найти. Вот что я пытаюсь сделать:

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, чтобы он не вкладывал данные с другим идентификатором, но 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 голосов
/ 02 сентября 2018

Вы можете использовать setData () с тремя существующими объектами DocumentReference и передать ему словарь с данными для добавления в коллекцию. Вам не нужно вызывать другие методы в CollectionReference, кроме тех, которые вы уже делаете.

let data = ... // your dictionary of data
allPosts.setData(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...