- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我正在更新我的应用程序以使用 Firebase 的 Firestore 数据库。我正在努力让应用程序显示从数据库中检索到的数据。数据检索正常,但未显示。通过设置断点,我已经确定 ViewHolder
我正在关注 this tutorial ,据此,当我启动我的应用程序时,我应该能够看到已添加到 Firestore 的项目(文档)。但这正在发生 onCreateViewHolder仅当我点击 tex
我想知道如何才能发现 FirestoreRecyclerAdapter 仅是空的。通过下面的代码,我可以发现它是否有一个或多个实例,但它不会准确地告诉我它什么时候里面没有对象。验证 if(adapte
FirebaseUI-Android 在使用 FirebaseRecyclerAdapter 时提供索引查询。这在访问 Firebase Realtime DB 数据时效果很好,如下所述:https:
我正在开发一个 Android 应用程序,我需要对我的 Firestore 数据库进行复杂的查询并创建一个 FirestoreRecyclerAdapter。要创建适配器,我需要一个接受输入整个查询的
我有一个如下所示的查询: Query first = ref.orderBy("name", Query.Direction.ASCENDING).limit(10); 这就是我将数据显示到我的 Re
我的应用程序中有一个 FloatingSearchView,用于对我的 Firestore 数据库执行一些查询。当我检查每个查询的大小时,结果符合预期,但我的 View 没有随结果更新。我不明白这是查
我可以查询 Firestore 并手动获取 ID,但我使用的是 FirestoreRecyclerAdapter,因为它附带了大量开箱即用的额外工作。所以,如果我有这样的代码: FirebaseFir
从 Firestore 的 Firebase-UI RecyclerView 中删除项目的正确方法是什么? 这是我的方法: new ItemTouchHelper(new ItemTouchHelpe
使用新的 firestore 如何从适配器获取 key (文档 ID)? 使用 Firebase 数据库,我们可以使用 String key = this.getRef(position).getKe
我正在尝试 FirestoreRecyclerAdapter,并且数据正在加载并且可以在调试器中正常看到。但是,当我尝试将 TextView 设置为等于某些数据时,它会崩溃,因为 TextView 为
我正在使用 RecyclerView 来显示来自 Firestore 数据库的一些数据。出于显而易见的原因,我将 FirestoreRecyclerAdapter 用作适配器。我在我的 Recycle
我有两个问题: Query firstQuery = ref.orderBy("name", Query.Direction.ASCENDING).limit(10); getData(firstQu
我的 android 项目有两个模型 - Track 和 Artist。 Track用于获取Track相关信息,Artist用于获取Artist相关详情。 以下是每个模型的示例代码: Track.cl
这个问题在这里已经有了答案: How to paginate Firestore with Android? (3 个答案) 关闭 3 年前。 我已经在 https://firebase.googl
我正在使用 Firestore 来存储“图表”集合。我需要查询集合以获取所有具有登录用户 ID 的图表。我有一个显示适当图表的 FirebaseRecyclerAdapter(查询通过 Firesto
我想在列表中显示服务器时间戳(实际上是日期)。 FirestoreRecyclerAdapter 由此类提供(仅保留与时间戳相关的方法): public class Lista { priva
在我的 Android 应用程序中,我使用 firebase-UI 中的 FirestoreRecyclerAdapter它绑定(bind)Query和Model。当应用程序离线时,我需要它不显示任何
firestore 回收器适配器 没有获取任何数据,我发现了上述错误。我搜索过,但没有人给出明确的答案。 我使用 EditText 和图像按钮进行搜索。 我正在使用身份验证,因此我不会这样做,这是否会
我是一名优秀的程序员,十分优秀!