Firestore从文档的内部数组中获取数据。
问题:Firestore如何从文档的内部数组中获取数据?
原因:Firestore不支持直接从数组中获取数据。需要将数据结构化为对象,其中每个键都是userId。这样,Firestore将对对象键进行索引,使您能够对其运行查询。
解决方法:将数据结构化为对象,其中包含每个userId的键,并在其中嵌入其他数据。然后可以运行相应的查询语句来获取所需的数据。
示例代码如下:
const userId = this.authenticationProvider.user.uid ref.collection('members').where(`memberList.${userId}`, '==', true)
甚至可以嵌入其他数据在每个userId键下,然后按照该用户是成员的顺序获取所有文档。
示例代码如下:
ref.orderBy(`memberList.${userId}`)
如果要动态更新membersList,可以使用事务进行操作。示例代码如下:
db.collection('members').doc('id').update({ 'memberList.${userId}' : true })
如果需要解决嵌套对象动态键的更新字段问题,可以参考以下链接中的解决方案:
Cloud Firestore: Update fields in nested objects with dynamic key
以上就是关于从Firestore文档的内部数组中获取数据的原因和解决方法的说明。