我正在构建一个类似于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”}