Android 的 Firestore 将 2 个集合合并到回收器视图中



我有一个用户收集,名称,photo

我有UID,用户,位置

的访问集合

我有一个循环系统,我想在其中显示使用用户名和照片

的位置

我可以使用参考字段类型吗?如果是这样,Firestore将如何知道链接访问。

也许我首先需要查询所有访问,然后查询相关用户,但要查询2件事:

  1. 这意味着要查询很多次。

  2. 我不明白如何将加入的集合收集到基于一个查询的适配器中?

请建议谢谢

当前代码

visitsList = db.collection("visitsList");
Query query = visitsList.whereEqualTo("userId",prefs.getString("id","")).orderBy("visitDate", Query.Direction.ASCENDING);
FirestoreRecyclerOptions<AVisit> options = new FirestoreRecyclerOptions.Builder<AVisit>().setQuery(query, AVisit.class).build();
adapter = new VisitsListAdapter(options, VisitsListActivity.this);
RecyclerView rv = findViewById(R.id.rvVisitsList);
rv.setHasFixedSize(true);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setAdapter(adapter);

代码是该集合中的简单查询,不确定如何从该集合中的用户ID字段中获取名称和照片。

我可以使用参考字段类型吗?

是的,您可以使用参考字段。

如果是这样,Firestore将如何知道链接访问==用户?

Firestore结果总是来自一个集合(目前)。当您从访问集合中阅读时,它不会自动加入用户收集的文档。您必须自己做。

这确实意味着您将执行多个读取,但通常不像您想象的那样慢。请参阅Google Firestore-如何在一次往返中通过多个ID获取文档?


更新:要在访问列表中显示来自用户配置文件的数据,有两个主要选项:

  1. populateView或使用自定义parseSnapshot实现中加载其他用户文档。

  2. 在访问集合中复制相关用户数据(在NOSQL数据库中非常正常)。另请参阅Alex'答案:用FirestoreRecyclerAdapter索引查询。

相关内容

  • 没有找到相关文章

最新更新