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



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

我有两个收藏

-users
--username
--uid

-post
--title
--user_id

如何在显示所有帖子时获得用户名

我只能返回user_id

您没有共享用于显示所有帖子的现有代码,因此很难给出要添加的确切代码。。。

但是,基本上,你有两个选择:

在用户集合中查找用户名

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

这意味着显示的每个帖子都有一个额外的读数

保存帖子文档时,将用户名与用户ID一起保存

这是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/

最新更新