开发者问题收集

Firestore 迭代文档数据 REACT.JS 中的对象

2021-09-14
589

我尝试在 bookChapters 路径中添加一些数据,但没有成功,有什么建议吗?
在此处输入图片描述

export const createNewChapter = (bookId, inputText) => {
  return async dispatch => {
    dispatch(createNewChapterStart());
    try {
      const chaptersList = [];
      firebase
        .firestore()
        .doc(`Users/${bookId}/bookChapters/${inputText}`)
        .onSnapshot(querySnapshot => {
          querySnapshot.forEach(doc => {
            const chapters = doc.data().bookChapters;
            Object.keys(chapters).forEach(k => {
              chaptersList.push({ key: k, name: inputText });
            });
          });
        });
      dispatch(createNewChapterSuccess(inputText));
    } catch (error) {
      dispatch(createNewChapterFail(error));
      console.log(error);
    }
  };
};
1个回答

当您使用 collection() 时,它会返回 CollectionReference 。在本例中,它指向子集合“bookChapters”,但它是一个 map ,如您的屏幕截图所示。如果您想要迭代该映射,则需要先获取该文档,然后读取 bookChapters 字段。

const chaptersList = [];
firebase
  .firestore()
  .doc(`Users/${bookId}`)
  .onSnapshot(querySnapshot => {
    querySnapshot.forEach(doc => {
      const chapters = doc.data().bookChapters
      Object.keys(chapters).forEach((k) => {
        chaptersList.push({key: k, name: chapters[k]});
      })
    });
  });

如果要将所有章节存储在同一个文档中,最好将列表存储为数组。

如果您尝试创建子集合,可以单击此按钮创建一个:

在此处输入图像描述

Dharmaraj
2021-09-14