【问题标题】:Firestore getting or adding spesific dataFirestore 获取或添加特定数据
【发布时间】:2021-04-15 20:33:51
【问题描述】:

我目前正在使用实时数据库,但我的问题找不到任何解决方案。

我在实时数据库中的库存层次结构:

我的 setValue 函数:(实时数据库)

dbRef.child("inventoryData/inventory/" + gainedItem.getDbId() + "/items/" + gainedItem.getItemId()).setValue(dbInventoryItemClass);

如何在 Firestore 中执行此操作?

在 Firestore 中,我将数据存储在文档中。但是当我想编辑特定数据时,我必须重新下载所有文档 - 编辑 - 上传。我想要的是我只想编辑实时数据库中的特定数据。

例如,我想从 subList 中删除“0”,在实时数据库中我可以删除:

dbRef.child("inventoryData/inventory/" + gainedItem.getDbId() + "/items/" + gainedItem.getItemId()).setValue(null);

如何在 Firestore 中执行此操作?我无法使用此代码:ref.collection("users").document(*userId*+"/inventory/0/items/2....").delete();

有没有像我在 Firebase 中使用过的方法?

【问题讨论】:

  • 我不确定我是否理解。为什么您的实时数据库代码+数据与此问题相关?是什么阻止您写信给 Firestore?
  • 除了弗兰克的问题,你用什么语言来实现这个?

标签: android firebase firebase-realtime-database google-cloud-firestore


【解决方案1】:

我并不完全了解您想要获得什么,但我会尝试一下。 有了一个集合,我们就称它为“ITEMS”。

“ITEMS”集合将保存 dbInventoryItemClass,并且因为我们使用的是 firestore 而不是实时数据库,所以无论其中的数据量如何,文档读取都是相同的(达到一定的限制) 添加 dbInventoryItemClass 字段,如 inventoryID (您可以使用 .whereEqualTo("inventoryID",0) 查询以获取库存 0 中的所有项目。 您当然可以添加尽可能多的标识并链接多个 whereEqualTo,只需确保记录 OnFailureListiner 中给出的异常,以获取为链接的 whereEqualTo 查询创建索引的链接。

至于你的问题:

我不明白,我必须下载 Firestore 中的所有 inventoryData。是真的吗?

据我所知,在 Firebase Firestore 中,当您查询文档时,您只会获得您查询的文档(而不是与该文档相关的任何子集合)

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2018-10-14
    • 2021-12-24
    • 2020-08-29
    • 2019-05-28
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多