在Firestore中存储相关信息的正确方法

时间:2019-05-30 17:43:39

标签: google-cloud-firestore

在Firestore中存储数据时,我了解到我们想尽可能地规范化,以使查询尽可能紧凑。我的问题是关于如何在对象上构造相关对象的数据,以使其易于使用。

例如,假设我有一个用户对象和一个业务对象。用户可以关注企业,而用户自己的企业。所以这是基本结构:

user
|-id
|-name
|-following
||-businessID1
||-businessID2
|-owns
||-businessID3
||-businessID4

business
|-id
|-name
|-followers
||-userID1
||-userID2
|-owners
||-userID3
||-userID4

现在,如果我想显示特定用户拥有或关注的企业列表,则可以轻松使用.whereArrayContains和bingo。但是,如果我对其进行更改,以便可以显示除ID以外的其他内容,例如:

user
|-id
|-name
|-following
||-business1
|||-businessID1
|||-businessname1
|||-businesspicURL1
||-business2
|||-businessID2
|||-businessname2
|||-businesspicURL2
|-owns
||-businessID3
||-businessID4

我不能再使用.whereArrayContains。所以我的问题更多是在最佳实践方面...我应该将业务ID列表存储为一个数组,然后使用该业务的索引在其他字段中查找业务信息吗? 像这样:

|-followingID
||-businessID1
||-businessID2
||-businessID3

然后

|-followinginfo
||-business1
|||-businessID1
|||-businessname1
|||-businesspicURL1
||-business2
|||-businessID2
|||-businessname2
|||-businesspicURL2

还是有更好的方法让我具有相同的灵活性和功能性? 谢谢!

0 个答案:

没有答案