Redux Firestore子集合查询

时间:2019-08-07 20:02:31

标签: reactjs firebase redux google-cloud-firestore

我正在构建一个类似于Reddit的Web应用程序。我在实现评论功能(用户可以在帖子上发表评论)时遇到麻烦。为评论存储的数据将在帖子的子集合中。每当我尝试将新数据添加到子集合时,返回的数据都是不确定的。我该如何解决?

堆栈:React,Redux,Firestore / Firebase

提交后,在我的redux操作文件中,我有console.log的formValues和docId,我可以看到该特定帖子的评论对象和ID。但是,当它分派给我的减速器时,该值不确定。我什至不太确定firestore子集合查询是否正确,但是我已经阅读了一些在线文档,它应该可以工作吗?

// actions

export const createComment = (docId, formValues) => (dispatch, 
getState, { getFirestore }) => {
  // make async call to database
  const firestore = getFirestore();
  const { profile } = getState().firebase;
  console.log(docId, formValues); // TUeF9trV2OjQmvJW9cxU {comment: "hello world"}

  firestore.collection('Forums').doc(docId).collection('comment').add({
    ...formValues,
    authorFirstName: profile.firstName,
    authorLastName: profile.lastName,
    createdAt: new Date()
  })
    .then(() => {
      dispatch({ type: CREATE_COMMENT, formValues });
    })
    .catch((err) => {
      dispatch({ type: CREATE_COMMENT_ERROR }, err);
    });
};

//reducer

export default (state = initState, action) => {
  switch (action.type) {
    case CREATE_POST:
      console.log('created project', action.formValues);
      return state;
    case CREATE_POST_ERROR:
      console.log('create forum error', action.err);
      return state;
    case CREATE_COMMENT:
      console.log('comment submitted', action.formValues);
      return state;
    default:
      return state;
   }
}

//控制台

TUeF9trV2OjQmvJW9cxU {评论:“ ethtgb”} 评论未提交

应该期待什么:

  • 应该能够在firestore的子集合中读取注释文档

  • 控制台应显示:

TUeF9trV2OjQmvJW9cxU {评论:“ ethtgb”} 提交的评论{comment:“ ethtgb”}

0 个答案:

没有答案