在我的Firestore数据库中,我有两个集合,用户和供稿。 Feeds包含有关该字段的数据,如注释,关注者......等。关注者数据类型是一个简单的(字符串)数组。
我的问题是,如何获取关注者数组包含用户ID的每个Feed?除了查询所有Feed之外还有其他方法,并在foreach中选择相关的吗?
答案 0 :(得分:2)
无法根据数组字段的内容查询文档。来自documentation:
虽然Cloud Firestore可以存储数组,但它不支持 查询数组成员或更新单个数组元素。但是,你 仍然可以通过利用其他功能来模拟这种数据 云Firestore。
如果您只想查询具有特定关注者的字段,则应使用对象字段而不是数组。
同一页文档继续描述将数组转换为对象的策略。如果用户ID跟随该Feed,则该对象会将用户ID映射到布尔值true
。
答案 1 :(得分:0)
我认为道格·史蒂文森的答案已经过时。您可以使用字段“关注者”来存储用户数组。
feeds: {
...
followers: ['user_id_1', 'user_id_2', 'user_id_3']
}
您可以使用array-contains
之类的Array membership运算符来过滤供稿集合。
示例(网络):
feedsRef.where("followers", "array-contains", "user_id_1")
您还可以根据需要使用in
和array-contains-any
运算符。