如何修复在Firestore中更新后页面上未更新的子集合

时间:2019-05-29 05:56:07

标签: reactjs redux google-cloud-firestore

问题

我正在更新Firestore数据库中的子集合,但是更新之后,页面上的数据就没有更新。但在刷新后进行更新。

我现在不知道要尝试什么,因为当我更新集合时(当我的数据在集合上时)确实更新了,而没有刷新页面,但是将数据移到子集合中后,我遇到了问题直到刷新页面后,页面上的数据才会更新。

我有一个列表视图,其中列出了文档列表,然后进入文档的详细信息视图并更新了文档的名称,并且该名称在Firestore数据库中得到了清晰的更新。 但是,当我返回到列表视图时,它就是显示的文档的旧名称。 但是刷新页面后,我得到了新数据。 我在我的应用程序中使用react,redux和firestore。 当我更新Firestore数据库时,我将动作传递给redux并返回状态,但是似乎直到刷新页面后才更新。 并且在将我的数据移至子集合后似乎出现了问题

DetailFileView.js

用于调用更新功能的代码

const mapStateToProps = (state, ownProps) => {

    return {
    users: state.firestore.ordered.users
    }
}

const mapDispatchToProps = (dispatch) => {
  return {
    UserDataUpdateFileName:  (Filename, Id email) => { dispatch(UserDataUpdateFileName (Filename,Id, email)) },


  }
}



export default compose(
    connect(mapStateToProps, mapDispatchToProps),

    firestoreConnect(( props,state) => {

      return [

              {collection: 'users',
              doc:'id',
              subcollections: [
                { collection: 'sessions', doc:props.match.params.post_id, storeAs: 'sessions'}
              ]
          }

             ]

  })     )(DetailFileView)

FileList.js

const mapStateToProps = (state) => {
  return {

  users: state.firestore.ordered.users 
  }
}


export default compose(
  connect(mapStateToProps),

  firestoreConnect(props =>{

  return [
    {collection: 'users',
    doc:'id',
    subcollections: [
      { collection: 'sessions',orderBy: ['date', 'desc'],storeAs: 'sessions' }
    ]
} 
  ]}
)(FileList)

RootReducer.js


const userDataReducer = (state = initState, action) => {
  switch (action.type) {

        case 'UPDATE_FILENAME_DOCUMENTS_ERROR':
          console.log('%c update user data filename in documents  error',"color:red");
            return state;


        case 'UPDATE_FILENAME_SESSIONS_SUCCESS':
          console.log('%c updated user data filename in sessions success',"color:green");
            return state;

      default:
        return state;
    }
}

export default userDataReducer 

预期输出: 子集合在firestore中正在更新(正在运行),然后也在listview页面上进行了更新(无需刷新)。

实际输出: 子集合在Firestore中已更新,但直到页面刷新后才更新listview页面上的数据

0 个答案:

没有答案