java - 如何在 Cloud Firestore 中正确构建本地化内容?

标签 java android firebase google-cloud-firestore

我正在考虑从实时数据库迁移到 Cloud Firestore,并想知道如何为本地化内容正确设置数据结构。

这就是 RTDB 中的结构:

articles
   en-US
      article_01
   de-DE
      article_01

在 Firestore 中,我会创建这样的东西吗?

Collection: articles
   document: article_01

然后将article_01的所有数据嵌套在名为“en-US”和“de-DE”的两个映射中?

不确定是否有更好的方法在 Firestore 中构建本地化数据?

感谢您的帮助:)

最佳答案

有一种简单的方法可以在 Cloud Firestore 中构建此类数据。所以一个可能的模式可能是:

Firestore-root
   |
   --- articles (collection)
        |
        --- articleId (document)
        |     |
        |     --- language: "en-US"
        |     |
        |     --- //other article properties
        |
        --- articleId (document)
              |
              --- language: "de-DE"
              |
              --- //other article properties

使用此数据库架构,在 Android 中,您可以简单地:

  • 仅使用 CollectionReference 即可获取所有文章,无论使用何种语言:

    FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    CollectionReference articlesRef = rootRef.collection("articles");
    articlesRef.get().addOnCompleteListener(/* ... */);
    
  • 使用查询获取与单一语言对应的所有文章:

    FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    Query query = rootRef.collection("articles").whereEqualTo("language", "en-US");
    query.get().addOnCompleteListener(/* ... */);
    

关于java - 如何在 Cloud Firestore 中正确构建本地化内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54090699/

相关文章:

android - 容器 'Android Dependencies' 引用了不存在的库

Android - setInfoWindowAdapter with WebView in google Marker (api v2)

firebase - 如何在flutter中设置模型对象的值并在FutureBuilder ListView中使用它?

java - 将 XML 文件与其他 PDF 文件一起附加在 zip 文件中

用于 AES 解密的 Java 字节

java - 寻找回文的低效解决方案

android - 从 Activity 返回时刷新 TextView

javascript - 获取 "Object is possibly ' null'。 TS2531”在表单输入字段上

android - Firebase 消息传递错误(仅限 Android)- 新推送通知的致命异常

java - 学习spring时出错