如何将firestoreConnect指向React-Redux-Firebase中的嵌套集合?

10

下面的代码将firestoreConnect指向我标记为projects的集合。

 { collection: 'projects' }

当项目集合直接位于根目录下时,它起作用,就像这样:

root/
  projects/

但是如果项目集合被一个位于另一个集合中的文档所引用,该怎么办?例如:

root/
  users/
    alice/
      projects/

我该如何将firestoreConnect指向projects集合?

文档对此没有说明。

视频链接
import React, { Component } from 'react'
import ProjectList from '../projects/ProjectList'
import Notifications from './Notifications'
import { connect } from 'react-redux'
import { firestoreConnect } from 'react-redux-firebase'
import { compose } from 'redux'
import { Redirect } from 'react-router-dom'

class Dashboard extends Component {...}

const mapStateToProps = (state) => {
  // console.log(state);
  return {
    projects: state.firestore.ordered.projects,
    auth: state.firebase.auth,
  }
}

export default compose(
  connect(mapStateToProps),
  firestoreConnect([
    { collection: 'projects' }, // <-- Question is about this line
  ])
)(Dashboard)

编辑:未成功的尝试

从我在这里的评论中所能拼凑出来的情况看来,答案可能是:

firestoreConnect([
  { 
    collection : 'users',
    doc        : 'alice',
    collection : 'projects',
  }
])

但是那个尝试失败了。


非常抱歉可能存在沟通不畅,但是您是否已经找到了解决这个问题的方法?我在按照完全相同的教程操作时遇到了类似的问题。我的预期结构应该类似于“Collection: courses, doc: state.auth.uid, collection: lecture”,但是没有成功。 - Andrew B.
1个回答

13

可以通过将多个集合/文档设置传递给 subcollections 参数来完成,如下所示:

firestoreConnect(() => [
  {
    collection: 'states',
    doc: 'CA',
    subcollections: [
      { collection: 'cities', doc: 'SF' },
      { collection: 'zips' }
    ]
  }
])

这在react-redux-firebase文档的firestoreConnect部分中有说明(因为它是一个特定于React的HOC)。可以传递给查询的选项在redux-firestore的README中有记录
如果您正在进行嵌套子集合,您可能需要使用v1.*.*版本,因为子集合与顶级集合一起存储在redux状态中。请注意,新版本有不同的API,如v1.0.0路线图所述
披露:我是redux-firestore的作者。

2
我的意见是:鼓励人们在SO上发布问题。通过提供示例,可以很好地增强文档。有了足够的示例,全面的文档就不那么重要了。Gitter非常适合建立社区。如果人们在这里发布问题,那么知识库将更加持久,并且更容易搜索和查找。这也将帮助新用户发现您的库。构建该库的工作真棒! - Let Me Tink About It
第一个数组内的对象缺少闭合括号。 - spod
我想知道这些都在哪里有记录。我猜它映射到一些Firestore API,但我还没有弄清楚是哪个。@Scott,你是从哪里找到你需要的文档来制作上面的解决方案的? - Esben von Buchwald
使用firestoreConnect的方法在react-redux-firebase文档中有详细介绍(因为redux-firestore不是特定于React的),并且在redux-firestore的README中也有引用。 - Scott
1
我在哪里可以找到关于“doc”字段的解释? - eMarine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接