我的看板Web应用程序具有这样的数据结构:
boards
-boardid
author: 'abc'
container:
-containerid1 (//generated by push)
title: 'Column1'
type: 'common'
-containerid2
title: 'Column2'
type: 'common'
-containerid3:
title: 'Column3'
type: 'individual'
userId:'....'
cards:
- containerid1
- cardid1: //generated by push
title: 'card1'
- cardid2:
title: 'card2'
- containerid3:
- cardid3:
title: 'card3'
基本上,在板上我只存储每个容器的常规数据,例如标题,类型等。...最后我想要的是容器数组,并且每个容器都有一个纸牌数组:
[{id:'containerid1',
title: 'Column1',
cards: [{id:'cardid1', title:'card1'}, {id:'cardid2', title:'card2'}]}
{...},
{...}]
我正在使用react redux来获取我的容器数据,但是我无法一次获取卡片数据。
const fetchContainers = (boardId) => dispatch => {
return FirebaseRef.child(`boards/${boardId}/containers`).on('value', (snapshot) => {
const containers = []
snapshot.forEach((childSnapshot) => {
const containerId = childSnapshot.key
const cards = []
FirebaseRef.child(`cards/${containerId}`).on('value', snap => {
if (snap.exists()) {
snap.forEach(snapCard => {
cards.push({
id: snapCard.key,
...snapCard.val()
})
})
}
containers.push({
id: containerId,
...childSnapshot.val(),
cards
})
dispatch({
type: FETCH_CONTAINERS,
containers
})
})
})
})
}
返回的是一个空的容器数组。 但是当我放置
containers.push({
id: containerId,
...childSnapshot.val(),
cards
})
dispatch({
type: FETCH_CONTAINERS,
containers
})
FirebaseRef.child('card ... 我能够获取容器的常规数据,但是带有空的卡数组:
[{id:'containerid1',
title: 'Column1',
cards: [] // empty here}
{id:'containerid2' ....]
更新:
我解决了我的问题。我无法访问路径“卡”的位置,因此它始终返回null。我忘了在Firebase中设置规则,因为我一开始并不熟悉Firebase。大错误!