首页 > 解决方案 > Firestore + Twitter 克隆:使用子集合与根级集合存储推文?

问题描述

出于学习目的,我的目标是使用 Firestore 创建 Twitter 克隆。

首先,我想我需要两个集合:userstweets. 我想提供所有推文的一个主要提要,所有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()

我想选择一种在规模上具有成本效益的方法。

标签: firebasegoogle-cloud-firestore

解决方案


我认为如果您选择选项 1 中提到的用户集合中的推文子集合会更好


推荐阅读