使用值映射的Firestore查询在修改映射时不会调用侦听器

时间:2018-01-05 16:52:28

标签: javascript google-cloud-firestore

As"收集组查询"仍未在Firestore上实现我使用值映射作为变通方法。结构如下:

db.collection( 'chat' )
  .doc( room_id )
  .where( 'user.' + user_id, "==", true )
  .onSnapshot( ... )

查询类似于:

{{1}}

他们的查询工作完美,但如果用户地图"添加或删除" user_id"字段,不调用侦听器(onSnapshot)。在Firebase控制台上,该值闪烁,表示已进行更改。

根据文档图,地图会自动编入索引,因此它不应该是索引问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

查看documentation我们可以看到:

  

使用范围过滤器对多个字段进行查询需要复合   指数。不幸的是,这显示的方法是不可能的   以上。必须在特定的字段路径上定义索引。你将会拥有   在每个可能的字段路径上创建索引(例如   categories.catscategories.opinion)这是不可能的   如果您的类别是用户生成的,请提前。

“上面显示的方法”是指您使用值映射执行复合查询的情况(与您的示例相同)。他们提出的解决方案是

  

将查询的所有信息编码为地图值

虽然不理想,但对某些情况可能有用。