在React Firebase应用上有条件集合的注销错误

时间:2019-03-16 16:43:52

标签: reactjs firebase react-redux react-redux-firebase

在Navbar.js组件上,我有一个条件元素,仅当您是siteAdministrator时才显示。如果满足条件,则会显示链接,您可以导航到页面。但是,当我注销时会抛出错误:

  

未捕获的FirebaseError:函数Query.where()需要有效的第三位   参数,但未定义。

我认为正在发生的事情是系统正在注销用户,而导出默认代码中的其余代码正在完成时,它注意到props.auth.uid不存在。关于正在发生的事情是否还有其他想法,有人可以帮助我解决。预先感谢...

// SiteAdministrators.js Component showing database query
const mapStateToProps = (state) => {
  const auth = state.firebase.auth

  return {
    messages: state.firestore.ordered.messages,
    siteAdmin: state.firestore.ordered.siteAdministrators,
    auth: auth
  }
}

export default compose(
  connect(mapStateToProps),
  firestoreConnect(props => {
    return [
        { collection: 'messages', where: [['replied', '==', false]] },
        { collection: 'siteAdministrators', where: [['pilotId', '==', props.auth.uid]]}
      ]
  })
)(SiteAdministrator);

// NavbarLinks.js Component showing logout function
const mapDispatchToProps = (dispatch) => {
  return {
    logout: () => dispatch(logout())
  }
}

export default compose(
  connect(mapStateToProps, mapDispatchToProps),
  firestoreConnect(props => {
    return [
        { collection: 'siteAdministrators' }
      ]
  })
)(LoggedInLinks)

1 个答案:

答案 0 :(得分:0)

我尝试向where查询添加条件。我不确定这是正确的,但目前正在运行。请让我知道这是否可以接受编程。

export default compose(
  connect(mapStateToProps),
  firestoreConnect(props => {
    return [
        { collection: 'messages', where: [['replied', '==', false]] },
        { collection: 'siteAdministrators', where: [['pilotId', '==', props.auth.uid || null]]}
      ]
  })
)(SiteAdministrator);