首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firebase:如何为相同的关键字查询检索两个值?

Firebase:如何为相同的关键字查询检索两个值?
EN

Stack Overflow用户
提问于 2018-06-20 12:06:18
回答 4查看 1.7K关注 0票数 0

我要做的是用相同的键查询Firebase的两个值。我的数据库是这样的:

代码语言:javascript
复制
"Document" : [ {
    "fileType" : "PDF",
    "language" : "en",
    "linkUrl" : "https://myfile.pdf",
    "name" : "Installation Guide"
  }, {
    "fileType" : "DOCUMENT",
    "language" : "fr",
    "linkUrl" : "https://myfile.txt",
    "name" : "text.txt"
  }

我在我的Android项目中编写了一个查询,以检索所有使用同一种语言的文档,并且它可以工作。

代码语言:javascript
复制
val selectedLanguage = LocalStorageHelper.getInstance(this)?.getSelectedLanguage()
val docRef = rootRef.child("Document").orderByChild("language").equalTo("en")

但现在我想做的是,寻找"en“和"fr”。

是否可以像上面这样做,我已经在网上搜索,但没有发现任何积极的这一点。

EN

Stack Overflow用户

发布于 2019-07-23 16:30:01

denormalization是NoSQL数据库中的一个很好的实践。然而,当你做错的时候,你有很多不必要的重复的数据。反正规化在正常情况下是数据的副本,但格式不同。非规范化数据应该包含较少或其他的内容,从而为应用程序中的特定用例带来一些好处。其中一些好处是减少了不必要的数据下载(因为应用程序的特定部分不需要某些数据)和不同的搜索或筛选算法。

以@Alex为例,您将为任何语言组合创建数据的副本。在用户可以选择多种语言的情况下,数据库中的所有内容都会包含相同的条目。这通常不是你想要的。(想想en/fr,en/de,en/fr/de,也许en/gr,等等)的组合。

当语言选择发生变化时,我只使用一个标志并用标志更新条目。这样,您可以选择带有标志prefLang = true的文档,并在语言更改时更新(添加或删除标记)文档。这样,唯一写入/修改的数据就是标志信息。否则,当您只为您的语言首选项创建一个特殊文档时,您将复制和删除整个文档信息。

也要考虑到节点大小的限制。正如@Alex所提到的,您应该在单个节点中使用多个文档节点而不是数组。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50947856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档