gpt4 book ai didi

android - 使用 FirestoreRecyclerAdapter 进行索引查询

转载 作者:行者123 更新时间:2023-11-30 00:07:19 26 4
gpt4 key购买 nike

FirebaseUI-Android 在使用 FirebaseRecyclerAdapter 时提供索引查询。这在访问 Firebase Realtime DB 数据时效果很好,如下所述:https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md#using-firebaseui-with-indexed-data

但是如何访问 Firestore 数据呢?似乎 FirestoreRecyclerAdapter 不支持通过 setIndexedQuery(keyref, dataref, ...) 进行索引查询 我怎样才能在 RecyclerView< 中手动执行数据查询?

更新:一些人声称 Firestore 不再需要索引查询,因为内置索引使架构设计比 Firebase Realtime DB 更容易。好吧,我不同意。

假设我有一堆相关的项目交易,我想按项目和交易进行查询。

我无法将交易设为项目的子集合,因为这样就无法检索所有交易的列表。我也无法将项目数据复制为每个事务中的冗余字段,因为数据是可变的。

考虑到这些限制,我坚持将项目和交易设为两个独立的集合,这两个集合需要在应用程序中再次组合:

items: {
"item1": {
"name": "some editable label",
[more fields]
}

transactions: {
"trans1": {
"itemid": "item1"
[more fields]
}
"trans2": {
"itemid": "item1"
[more fields]
}
}

FirebaseRecyclerAdapter.setIndexedQuery 允许我检索交易列表(键)和每个交易(数据)对应的项目记录。 Firestore 索引虽然功能强大,但在这种情况下无济于事。

最佳答案

FirestoreRecyclerOptions 类下没有setIndexedQuery() 方法,因为不需要这样的方法。来自offical documentation regarding indexes ,

Cloud Firestore requires an index for every query, to ensure the best performance. All document fields are automatically indexed, so queries that only use equality clauses don't need additional indexes.

如果您需要一个使用多个属性的查询,您需要从 Firebase 控制台手动创建一个新索引。 Firestore 尚不支持以编程方式创建索引。

编辑:

I can't make the transactions a subcollection of items as this would make it impossible to retrieve a list of all transactions.

没错,集合下没有集合,文档下没有文档。但是你可以使用下面的结构:

Collection -> Document -> Collection

但请记住,使用嵌套集合和文档现在已成为 Firestore 中的常见做法。假设您在 items 下有 transactions。在 Firebase 实时数据库中,如果您有一个对象嵌套在另一个对象中,每次您想要查询数据库以仅显示项目时,整个 Items 对象将与 Transactions 对象,结束花费更多的带宽。但是当涉及到集合和文档时,情况就不同了。

我不了解您的应用的用例,因为那里的信息较少,但在 Cloud Firestore 中创建集合和文档之间的关系要容易得多。有时间的话可以看看我的一个tutorials关于如何创建 Firestore 数据库结构。

即使您使用的是 Firebase 实时数据库或 Cloud Firestore 数据库,反规范化也是正常的。所以不要害怕重复数据。

关于android - 使用 FirestoreRecyclerAdapter 进行索引查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48756129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com