【问题标题】:how to get a username in firestore from another collection with angularfire如何使用angularfire从另一个集合中获取firestore中的用户名
【发布时间】:2019-10-26 04:10:38
【问题描述】:

如何使用 angularfire 从另一个集合中获取 firestore 中的用户名

我有 2 个收藏

-users
--username
--uid

-post
--title
--user_id

显示所有帖子时如何获取用户名?

我只能返回 user_id

【问题讨论】:

  • 在我看来,如果我理解正确的话,您希望使用 Firestore 进行关系行为。正如@Renaud Tarnec 所解释的那样,您需要在您的post 集合中包含该信息,因为不可能执行诸如关系JOIN 之类的操作。

标签: angular firebase google-cloud-firestore observable angularfire


【解决方案1】:

您没有共享用于显示所有帖子的现有代码,因此很难为您提供要添加的确切代码...

但是,基本上,您有两种选择:

在 users 集合中查找用户名

在显示post 之前,您对数据库进行额外查询以获取username 的值,例如afs.collection('users', ref => ref.where('uid', '==', 'user_id))(参见https://github.com/angular/angularfire/blob/master/docs/firestore/querying-collections.md

这意味着您显示的每个帖子额外阅读

保存post文档时将用户名和userid一起保存

这是 NoSQL 世界中的一种经典方法:您以一种易于构建和执行查询的方式对数据进行非规范化。

更具体地说,这意味着您的帖子集合如下:

-post
--title
--user_id
--username

但是,只有当您在编写 post 文档时在前端具有 username 的值时,这才有可能。一种经典的方法是通过currentuser.displaynamecurrentuser 对象中获取它。

这种方法的一个副作用是您需要保持值同步(即user 文档中的值和post 文档中的值s)。但是,在您的具体情况下,我们可能会假设用户名不会经常更改...


您不应该害怕重复数据和非规范化您的数据模型。这是一篇关于 NoSQL 数据建模方法的“著名”帖子:https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-20
    • 2021-11-09
    • 2019-10-03
    • 2023-03-05
    • 2020-12-28
    • 2021-05-26
    • 2021-07-17
    相关资源
    最近更新 更多