【问题标题】:How to get value of some field in firebase firestore android?如何在firebase firestore android中获取某些字段的值?
【发布时间】:2018-05-08 05:12:24
【问题描述】:

像上面的问题一样,我想获取 firebase firestore 中某个字段的值,而不是使用 DocumentSnapshot

获取所有文档

在 SQL 中这样SELECT col_1, col_2, col_3 FROM table_name

我该怎么做?

感谢您的帮助。

【问题讨论】:

  • 分享您的数据库结构..

标签: android firebase google-cloud-firestore


【解决方案1】:

Cloud Firestore 客户端 SDK 始终读取并返回完整文档。无法读取文档中的字段子集。

您可以检索整个文档,然后处理 DocumentSnapshot 以仅使用您感兴趣的字段。但这意味着您使用的带宽超出了需要。如果您的应用经常出现这种情况,请考虑创建一个辅助集合,其中每个文档仅包含您感兴趣的字段。

还可以在此处查看 Doug 的回答(针对 Swift):How to access a specific field from Cloud FireStore Firebase in Swift

【讨论】:

  • 是的,但是这样我不知道 DocumentSnapshot 的什么被修改了!
  • @Frank 关于您提到的带宽问题,如果我查询具有多个子集合(/嵌套子集合)的文档,firestore 将返回该文档以及子集合的文档?
  • Firestore 查询很浅。他们不返回子集合中的文档。
【解决方案2】:

试试这个代码:

//set a global variable
dataList: Array<any>;


const dataCollection = firebase.firestore().collection('data');
dataCollection.get(query => {
query.forEach(docs => {
this.dataList.push({id: doc.id, data:doc.data()});
  })
})

【讨论】:

    【解决方案3】:

    Firestore 可以读取单个字段值。 Firebase 指南似乎没有显示这些简单的方法。

    例如:

    [android]
    
    String value = document.getString("col_1");
    
    
    [node.js]
    
    const value = doc.data().col_1
    

    【讨论】:

    • 感谢@Mike Yan 它有效。 Firebase 指南没有包含它真的很奇怪。
    • 您仍在从 Firestore 读取整个文档,如果这很重要的话。您在客户端上进行此读取会消耗整个文档的带宽。
    • 可以,但至少客户端不需要遍历整个文档来获取1个单字段数据。
    • 动物 = document.toObject(Animal);然后是 animal.getName() 或者在 js 中 const animal = document.data();然后是animal.name,使用模型!
    猜你喜欢
    • 2022-10-01
    • 2020-09-10
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多