【问题标题】:Can I read subcollections and documents in a document without separately reading it?我可以在不单独阅读的情况下阅读文档中的子集和文档吗?
【发布时间】:2020-07-20 11:55:50
【问题描述】:
 componentDidMount(){
    dbh.collection('Groups').get()
    .then(querySnapshot => {
        querySnapshot.forEach(doc => {
            this.setState({
                groups: [...this.state.groups,doc.data()],
            })
        })
    })
}

我从 Firestore 阅读了一份文档。但是,此文档包含一个包含许多文档的子集合 (Sessions)。有没有办法阅读带有子集和子文档的文档?并将它们存储在该州? 目前我只能看到没有子集合和子文档的已读文档的元素。 谢谢

【问题讨论】:

    标签: javascript reactjs firebase react-native google-cloud-firestore


    【解决方案1】:

    有没有办法读取包含子集合和子文档的文档?

    单个查询是不可能的。您必须分别查询每个子集合。

    Firestore 查询总是很浅,并且不会考虑单个集合之外的文档。一般意义上的模式是这样的:

        dbh.collection('Groups').get()
        .then(querySnapshot => {
            querySnapshot.docs.map(snapshot => {
                return dbh
                    .collection('Groups')
                    .doc(snapshot.id)
                    .collection('whatever')
                    .get()
            })
        })
        .then(results => {
            this.setState(...)
        })
    

    您可以看到,您必须使用 Promise 将查询链接在一起,然后在一切可用后设置状态。

    【讨论】:

    • 总读取数 = (# of Groups) x (#of whatever) ??
    【解决方案2】:

    您可以使用以下查询语法访问文档的子集合:dbh.collection('Groups/{groupId}/users')

    {groupId} 是您的文档,users 是子集合。

    然后您可以将其存储在该组的状态中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      相关资源
      最近更新 更多