2017-10-17 7 views
2

Temps réel structure de base de données x FirestoreStructure Base de données FireStore Messages

messages.Discussion structure du système en temps réel:

Posts 
--ID_USER_1 
----IdPost1 
------Date 
------Image 
---IdPost2 
------Date 
------Image 
---IdPost3 
------Date 
------Image 
--ID_USER_2 
----IdPost1 
------Date 
------Image 
---IdPost2 
------Date 
------Image 
---IdPost3 
------Date 
------Image 

modèle Post système en temps réel. Pour structurer le Firestore, il pourrait ressembler à ceci:

Post 
--ID_POST1 
----Id_user1 
----Image 
--ID_POST2 
----Id_user2 
----Image 

D'après ce que je comprends dans Firestore a les contraintes de collections, parce que lors de la conversion à la même structure de temps réel, cela ne fonctionnerait pas parce que nous pouvons ne pas avoir deux collections comme: mDB.collection ("Posts"). collection().

Quelle est la meilleure façon de structurer un système d'affichage entre les utilisateurs?

Merci!

Répondre

1

Vous avez raison de dire que dans Cloud Firestore, vous devez alterner documents et collections, mais je ne crois pas que ce soit un problème pour votre structure de données.

Par exemple, vous pourriez avoir:

- `posts` [collection] 
    - `ID_USER_1` [document] 
     - `posts` [subcollection] 
     - `ID_POST_1` [document] 
      - `Date` [field] 
      - `Image` [field] 
     - `ID_POST_2` [document] 
      - `Date` [field] 
      - `Image` [field] 

Donc, pour obtenir tous les messages pour un utilisateur que vous pourriez faire:

db.collection('posts').doc('user1234').collection('posts').get() 

// OR 

db.collection('posts/user1234/posts').get() 

Depuis cloud Firestore a aussi des requêtes rapides et puissants, vous pouvez aussi stocker tous vos messages dans une collection de haut niveau posts et de stocker UserId comme une propriété de la poste:

- `posts` [collection] 
    - `ID_POST_1` [document] 
     - `UserId` [field] 
     - `Date` [field] 
     - `Image` [field] 
    - `ID_POST_2` [document] 
     - `UserId` [field] 
     - `Date` [field] 
     - `Image` [field] 

Et puis pour obtenir tous les messages pour un utilisateur, vous pouvez faire:

db.collection('posts').where('UserId', '==', 'user1234')