【问题标题】:Query list from multiple countries in firebasefirebase中多个国家的查询列表
【发布时间】:2017-12-13 09:25:14
【问题描述】:

我想尝试NoSql 并在Firebase 开始我的项目。我的应用程序的数据增加了很多。但是,现在我需要运行一个特定于国家/地区的应用程序,因此根据我的应用程序中的国家/地区显示/过滤数据。

我当前数据的结构如下。

{ clients:  {
  "04E2LBixKoVn9sGzRvxtMoC7MsF3" : {
    "clientName" : "Rising Mall",
    "contact" : {
      "branches" : {
        "-Kx6QoVhr0WpDQ3i68_n" : {
          "address" : "Test Location",
          "phone" : "999999999",
          "country": "USA"
        }
      },
      "mail" : "test@test.edu.np",
      "website" : "http://www.test.np"
    },
    "description" : "Test Description."}
  },
  "073ezb0UsgetSef0lwk50dhogjM2" : {
    "clientName" : "Leather Craft",
    "contact" : {
      "branches" : {
        "-Kx6QoVj_QKM7tjekh_1" : {
          "address" : "Test Location",
          "phone" : "888888888"
          "country": "UK"
        }
      },
      "mail" : "test@test.com",
      "website" : "https://www.test.com"
    },
    "description" : "Test"
   }
}

从上面的结构中,我想得到一个国家是“美国”的所有客户的列表。我怎样才能通过在Android中直接查询FirebaseDatabase来做到这一点?可能吗?还是我必须完全改变我的数据库结构?如果我必须重组我的数据库,也请提出解决方案。

更新

我接受了@alex-mamo 的建议,并通过对数据进行非规范化来设计我所有的结构。

Firebase-root
    |
    --- usClients
           |
           --- usClientId1 : true
           |
           --- usClientId2 : true

【问题讨论】:

  • 你应该改变你的数据库结构。这是可能的,但需要很多方法
  • @NikunjParadva 对结构有什么建议吗?

标签: android firebase firebase-realtime-database nosql


【解决方案1】:

要实现这一点,您不需要完全重组您的数据库,您只需要稍微改变一下即可。要解决此问题,您需要将另一个节点添加到名为usClients 的数据库中。每次添加来自美国的新用户时,也将其添加到这个新创建的节点中。您的新节点应如下所示:

Firebase-root
    |
    --- usClients
           |
           --- usClientId1 : true
           |
           --- usClientId2 : true

通过这种结构,您可以查询您的数据库以仅获取美国境内的客户。这可以通过在usClients 节点上附加一个侦听器并在DataSnapshot 对象上迭代来完成。

这种做法称为非规范化,是 Firebase 的常见做法。为了更好地理解,我建议您观看此视频,Denormalization is normal with the Firebase Database

【讨论】:

  • 谢谢。我将深入观看视频,看看如何构建我的数据库。
猜你喜欢
  • 2013-07-20
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 2023-03-15
  • 2014-12-19
  • 1970-01-01
相关资源
最近更新 更多