当前位置: 首页 > 知识库问答 >
问题:

如何在flutter firestore中从保存在另一个集合中作为文档的id中检索存储在一个集合中的文档

卜瀚漠
2023-03-14

在我的flutter项目中,我有2个两个消防库集合,一个是用户集合,我存储了所有用户详细信息,另一个集合是关注者,其中每个用户都有一个子集合,他/她的关注者用户ID作为文档。我的问题是,如何从用户收藏中检索这些关注者的详细信息?

这是我的用户收藏

共有2个答案

穆劲
2023-03-14

我认为您正在构建数据,就好像您在关系数据库中工作一样。FiRecovery不支持SQL数据库等外键,因此您无法检索SQL等嵌套数据。FiRecovery是一个没有任何引用概念的SQL数据库。请参阅FiRecovery数据模型。

在 Firestore 中,通常通过存储要“引用”的文档的 ID 来对关系进行建模。从这个意义上说,您可能不需要将“用户”文档存储在“关注者”中,但是“user_id”字段就足够了(您正在尝试这样做)。需要注意的是,这种数据布局的代价是,在获取实际用户数据之前,必须从“关注者”中获取“user_id”。您可以在文章link1,link2和其他线程中阅读有关数据非规范化和建模关系的更多信息。

在FiRecovery中,您需要单独获取引用的数据,您可以与关注者数据并行单独获取所有用户数据并将其存储在地图中,或者如果您最初不需要用户数据,则在需要时获取每个用户数据,例如当您检查每个关注者的详细信息时。

东门新立
2023-03-14

使用Get Query读取一次集合或文档

您可以使用列表视图生成器包装 GetUserName 并传递 userId。



class GetUserName extends StatelessWidget {
  final String documentId;

  GetUserName(this.documentId);

  @override
  Widget build(BuildContext context) {
    CollectionReference users = FirebaseFirestore.instance.collection('users');

    return FutureBuilder<DocumentSnapshot>(
      future: users.doc(documentId).get(),
      builder:
          (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {

        if (snapshot.hasError) {
          return Text("Something went wrong");
        }

        if (snapshot.hasData && !snapshot.data!.exists) {
          return Text("Document does not exist");
        }

        if (snapshot.connectionState == ConnectionState.done) {
          Map<String, dynamic> data = snapshot.data!.data() as Map<String, dynamic>;
          return Text("Full Name: ${data['full_name']} ${data['last_name']}");
        }

        return Text("loading");
      },
    );
  }
}
 类似资料:
  • 我有一个问题,但在我看来,我看到的所有解决方案都在解决一个比我更复杂的问题。 我对MongoDB比较陌生,但我一直在将它与Apache Neach一起使用来存储抓取的文档。由于我分阶段抓取,并以不同的方式评估每个抓取的结果,以获取统计数据,因此我一直将结果存储在不同的集合中。 我所要做的就是把这些收藏放在一起成为一个大的收藏,这样我就可以翻译和分类。所有字段都是相同的,因此我不需要添加任何新字段。

  • 我所处的情况是,当用户付款时,存储在Firestore集合(CartProducts)中的购物车产品应移动到名为SuccessFullOrders的新集合。 因此,我的基本问题是如何在Flutter中将所有文档从一个集合移动到Firestore的另一个集合 我不知道如何在flutter中编写代码。谢谢你的回答 这是我的代码

  • 我的想法是为帖子创建一个like&views系统(用户可以喜欢和不喜欢一个帖子),并在一个片段中显示用户列表,顺序如下:顶级用户是拥有最多喜欢的用户。 > 我有一个帖子集。每个文档(是一篇文章)包含创建它的用户的ID,以及一个喜欢的计数器(我称之为“a”)。 我有另一个集合,用户。每个文档(它是一个用户)都包含一个计数器(我称之为“B”),它计算所有帖子加起来的赞数。 目前,我使用“B”对上面描述

  • 模型feed.ts 新闻feed.component模板 news-feed.component.ts feed.service.ts 这可以做消防商店吗?我是消防商店的新手。请帮帮我。谢谢!

  • 在上面的屏幕截图中,您可以看到我从mongo数据库中的测试集合中打开了一个名为(1)ObjectId(572b…ec7a)的文档。(测试集合中充满了这样的文档)在屏幕截图底部附近,您可以看到一个名为Name的字段,该字段的类型为string,值为EditMessagesSettings。我想查询tests集合并返回任何包含特定名称的文档(如本例中的EditMessagesSettings)。我该怎