Reputation: 33
I'm thinking about migrating to Cloud Firestore from realtime ratabase and wondering how I can properly setup the datastructure for my localized content.
This is how it was structured in RTDB:
articles
en-US
article_01
de-DE
article_01
In Firestore, would I create something like this?
Collection: articles
document: article_01
And then nest all the data of article_01
in two maps called 'en-US' and 'de-DE'?
Not sure if there's not a better way to structure localized data in Firestore?
Thanks for any help :)
Upvotes: 3
Views: 1999
Reputation: 138824
There is a simple way for structuring such data in Cloud Firestore. So a possible schema might be:
Firestore-root
|
--- articles (collection)
|
--- articleId (document)
| |
| --- language: "en-US"
| |
| --- //other article properties
|
--- articleId (document)
|
--- language: "de-DE"
|
--- //other article properties
Using this database schema, in Android, you can simply:
Get all articles regardless of the language using just a CollectionReference
:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference articlesRef = rootRef.collection("articles");
articlesRef.get().addOnCompleteListener(/* ... */);
Get all articles that correpond to a single language using a Query
:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
Query query = rootRef.collection("articles").whereEqualTo("language", "en-US");
query.get().addOnCompleteListener(/* ... */);
Upvotes: 4