答案 0 :(得分:0)
我如何才能到达公司数组中的特定公司索引?
您无法根据相应的索引获取,更新或删除Firestore数组中的元素。试想一下,如果一个用户想要编辑索引0处的值,而另一个用户想要删除索引0处的值,而另一个用户想要在索引1处添加另一个值,那会发生什么?结果截然不同,ArrayIndexOutOfBoundsException为何呢?因此,带有数组的Firestore操作有点不同。因此,您无法执行特定操作,例如在特定索引处插入,更新或删除。因此,仅在不关心存储元素的确切顺序时才使用数组。
Firestore于几周前添加了一些功能,以添加或删除特定元素,但前提是不关心它们的确切位置。请参阅here官方文档。
在您的情况下,您没有简单的字符串数组,而有一个对象数组,这意味着为了进行一些改动,您应该获取整个对象,遍历属性,进行必要的更改并将其写回数据库。
答案 1 :(得分:0)
好的,有一种查询数组的方法。
如果这行得通,我不是100%,但我之前曾尝试过。它可能需要完整的对象。
this.usersCollection = this.afs.collection('Users', ref => ref.where('companies', 'array-contains', {location: 'test'}) );
如果这不起作用,您始终可以选择与其中的公司作为文档的子集合。