【发布时间】:2019-01-27 01:24:22
【问题描述】:
出于学习目的,我打算使用 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()
我想选择一种在规模上具有成本效益的方法。
【问题讨论】:
-
几周前我开始使用 firebase,但我知道:如果您总是浏览朋友的帖子,选项 1 非常棒。但是效率低下,如果您想查询所有推文(您还必须查询父级(用户)。选项 3 非常适合查询所有推文(如提要),但如果您愿意,不如选项 1 快仅查询朋友的推文(当您显示他们的个人资料时。不能告诉选项 2。
标签: firebase google-cloud-firestore