angular - 如何使用angularfire从另一个集合中获取firestore中的用户名
问题描述
如何使用angularfire从另一个集合中获取firestore中的用户名
我有 2 个收藏
-users
--username
--uid
和
-post
--title
--user_id
显示所有帖子时如何获取用户名?
我只能返回 user_id
解决方案
您没有共享用于显示所有帖子的现有代码,因此很难提供要添加的确切代码...
但是,基本上,您有两种选择:
在 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 文档时将用户名与用户 ID 一起保存
这是 NoSQL 世界中的经典方法:您以一种易于构建和执行查询的方式对数据进行非规范化。
更具体地说,这意味着您的帖子集合将类似于:
-post
--title
--user_id
--username
但是,只有在前端具有username
编写post
文档时的值时,这才有可能。一种经典的方法是从currentuser
对象中获取它,通过currentuser.displayname
.
这种方法的一个副作用是您需要保持值同步(即user
文档中的值和post
文档中的值)。但是,在您的具体情况下,我们可能会假设用户名不会经常更改......
你不应该害怕复制数据和非规范化你的数据模型。这是一篇关于 NoSQL 数据建模方法的“著名”帖子:https ://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/
推荐阅读
- c++ - 谁能告诉我为什么斐波那契函数不起作用?
- firebase - 使用文档 ID 上传存储文件并传递 DownloadURL 时如何避免双重 Cloud Firestore 写入
- python - Python:如果值不等于零,则仅对数组求幂
- python - Python没有使用正确的点子
- azure-ad-b2c - 带有身份验证器的 B2C 自定义策略
- sql-server - 在 OpenQuery 中执行存储过程我缺少什么
- javascript - 在 .then 块内或在异步等待块内抛出有什么区别?
- xcode - Xcode Storyboard 中的圆角文本字体
- raspberry-pi3 - 为 Raspberry Pi 3 下载 Android Things 映像时出错
- matlab - 如何计算乐高积木的数量?