在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
还是有更好的方法让我具有相同的灵活性和功能性? 谢谢!