firebase - Firestore + Twitter 克隆:使用子集合与根级集合存储推文?
问题描述
出于学习目的,我的目标是使用 Firestore 创建 Twitter 克隆。
首先,我想我需要两个集合:users
和tweets
. 我想提供所有推文的一个主要提要,所有users
这些都可以轻松完成:
db.collection('tweets').get()
.then(querySnapshot => {
querySnapshot.forEach(tweet => {
console.log(`${tweet.data()}`);
})
})
如果我希望能够查询特定用户的推文列表(查看该用户的个人资料时)怎么办?
据我了解,我有三种选择,但我不确定每种方法的所有优点/缺点:
选项 1:创建将保存推文的用户子集合:
db.collection('users').doc('username_123').collection('tweets').get()
选项 2:创建一个具有合适名称的根级集合,该名称将显示数据的层次结构:
var username = 'username_123';
db.collections('tweets__' + username).get()
选项 3:使用相等运算符查询:
var username = 'username_456';
db.collection('tweets').where("username", "==", username).get()
我想选择一种在规模上具有成本效益的方法。
解决方案
我认为如果您选择选项 1 中提到的用户集合中的推文子集合会更好
因为很容易为每个用户查询推文
对于查询所有推文,您可以使用Firestore 集合组查询
推荐阅读
- mssql-jdbc - DBVisualizer 只显示模式,不显示表,也不让我看到数据
- python-3.x - 如果其行的内容包含 Pandas 中列表的元素,则基于一列进行过滤
- spring-websocket - Spring Websocket 缓冲区大小、连接数和可用内存
- python - 如何使用python打开一个空白的excel表(以前没有保存)?
- java - checkmarx 存储的绝对路径遍历
- vim - vim空行为红色,更改窗口大小后消失
- laravel - 在 Laravel8 web.php 中显示 ADD 语句
- python - 在调用高阶函数时存储变量
- django - django.db.utils.IntegrityError: (1062, "Duplicate entry '1' for key 'user profile.PRIMARY'")
- vue.js - 多个水平条形图显示在同一行