javascript - Firestore 遍历文档数据 REACT.JS 中的对象
问题描述
我正在尝试在 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);
}
};
};
解决方案
当您使用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]});
})
});
});
如果要将所有章节存储在同一个文档中,最好将列表存储为数组。
如果您试图创建一个子集合,您可以通过单击此按钮来创建一个: