java - Firestore如何从文档引用包含特定查询路径的集合中查询数据
问题描述
如何从文档引用包含特定路径的集合中查询数据?
这是我的 Firestore 数据库,归档用户是文档引用类型,映射文档引用形成其他集合。
在这里,我需要从userinfo集合中获取所有数据,其中用户文档引用包含特定路径(例如:player/8SLuNWrI09UIuUfNe7ZR/playerinfo)
我尝试了以下查询,但似乎不起作用:
Query query = mFirebaseFirestore.collection("userinfo").whereGreaterThanOrEqualTo("user", "player/8SLuNWrI09UIuUfNe7ZR/playerinfo");
从查询中获取数据的代码:
query.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot queryDocumentSnapshots, FirebaseFirestoreException e) {
//queried data here
}
});
文档上没有可用于使用文档引用类型查询 Firestore 的示例。
请帮助我从具有特定路径的文档引用的集合中查询文档列表。
提前致谢
解决方案
您在 Firestore 的官方文档中找不到任何示例,因为不幸的是,没有任何contains()
方法可以帮助您验证字符串是否是参考的一部分,参考是文档的属性。
但是,如果您想获取playerinfo
集合下存在的所有文档,则只需使用get()
调用。addSnapshotListener()
除非您需要实时获取数据,否则请勿使用。
有一个解决方案,您需要将user
属性转换为 String 类型并使用如下所示的查询:
Query query = = mFirebaseFirestore.collection("userinfo").whereEqualTo("user", "player/8SLuNWrI09UIuUfNe7ZR/playerinfo");
但是请记住,这只有在属性user
包含一个 String 类型的值时才有效,该值等于:
player/8SLuNWrI09UIuUfNe7ZR/playerinfo`
而不是:
player/8SLuNWrI09UIuUfNe7ZR/playerinfo/qY0D7Vef...
^ ^
还有一种方法可以解决这个问题。查询整个集合,获取user
属性的所有值,并List
通过将它们从转换Reference
为字符串将它们添加到 a。最后,只需遍历列表并contains()
在每个元素上使用方法。
推荐阅读
- mysql - 计算由多个消费者共享的唯一电子邮件地址
- android - 如何将已删除的 Android 应用重新提交到 Google Play 商店
- .net - 来自不同程序集的显示名称本地化(未引用)
- python - 如何从电子邮件中获取有效负载并发送未修改的,没有主标题
- android - 为什么在删除最近的应用程序后服务没有在后台运行
- vuejs2 - 状态更改时不会更新计算属性
- php - 有没有办法通过他的路由名称从控制器返回视图?
- javers - 是否可以链接不同的 javers 提交并使用深度阴影范围或任何其他方式将它们一起获取?
- c++ - C ++的初学者,我面临这个问题错误C3867
- botframework - 如何更改 WebChat 中的 SendIcon