【问题标题】:Firebase Firestore get user related dataFirebase Firestore 获取用户相关数据
【发布时间】:2018-03-30 11:31:57
【问题描述】:
在我的 Firestore 数据库中,我有两个集合,users 和 feeds。 Feeds 包含有关字段的数据,如 cmets、followers... 等。followers 数据类型是一个简单的(字符串)数组。
我的问题是,我怎样才能获得关注者数组包含用户 ID 的每个提要?除了查询所有提要并在 foreach 中选择相关提要之外,还有其他方法吗?
【问题讨论】:
标签:
javascript
firebase
google-cloud-firestore
【解决方案1】:
无法根据数组字段的内容查询文档。来自documentation:
虽然 Cloud Firestore 可以存储数组,但不支持
查询数组成员或更新单个数组元素。然而,你
仍然可以通过利用其他功能对此类数据进行建模
Cloud Firestore。
如果您只想查询具有特定关注者的字段,则应使用对象字段而不是数组。
同一页的文档继续描述将数组转换为对象的策略。如果用户关注该提要,该对象会将用户 ID 映射到布尔值 true。
【解决方案2】:
我认为 Doug Stevenson 的回答已经过时了。您可以使用“关注者”字段来存储用户数组。
feeds: {
...
followers: ['user_id_1', 'user_id_2', 'user_id_3']
}
您可以使用Array membership 等array-contains 运算符来过滤提要集合。
示例(网络):
feedsRef.where("followers", "array-contains", "user_id_1")
您还可以根据需要使用in 和array-contains-any 运算符。