As"收集组查询"仍未在Firestore上实现我使用值映射作为变通方法。结构如下:
db.collection( 'chat' )
.doc( room_id )
.where( 'user.' + user_id, "==", true )
.onSnapshot( ... )
查询类似于:
{{1}}
他们的查询工作完美,但如果用户地图"添加或删除" user_id"字段,不调用侦听器(onSnapshot)。在Firebase控制台上,该值闪烁,表示已进行更改。
根据文档图,地图会自动编入索引,因此它不应该是索引问题。
有什么想法吗?
答案 0 :(得分:0)
查看documentation我们可以看到:
使用范围过滤器对多个字段进行查询需要复合 指数。不幸的是,这显示的方法是不可能的 以上。必须在特定的字段路径上定义索引。你将会拥有 在每个可能的字段路径上创建索引(例如
categories.cats
或categories.opinion
)这是不可能的 如果您的类别是用户生成的,请提前。
“上面显示的方法”是指您使用值映射执行复合查询的情况(与您的示例相同)。他们提出的解决方案是
将查询的所有信息编码为地图值
虽然不理想,但对某些情况可能有用。