【发布时间】:2017-09-26 21:17:47
【问题描述】:
我正在使用 redux、react-redux、redux-thunk 构建一个 react native 应用,并使用 firebase 作为后端。
我的数据库是非规范化的,所以我必须在 firebase 引用中获取键,并且对于每个键,我需要从另一个引用中获取数据。
使用 firebase .once('value') 我得到了这样的结果:
const fetchPosts = ( uid ) => {
return ( dispatch ) => {
dispatch(postsIsFetching())
const userPostsRef = firebase.database().ref('users/' + uid + '/myposts')
var keys = []
//
userPostsRef.once('value').then(snap => {
snap.forEach(post => keys.push(post.key))
}).then(() => {
keys.forEach(key => {
const postRef = firebase.database().ref('posts/' + key )
postRef.once('value').then(snap => {
var newPost = {
title: snap.val().title,
user: snap.val().user
}
dispatch(setPost(newPost))
})
})
}
}
但这不是实时更新,因为 .once() 方法只读取一次数据。 .on() 方法不返回 Promise,那么我该如何解决呢? 使用 redux-thunk 和非规范化的 firebase 数据库获取数据的最佳模式是什么?
谢谢大家
【问题讨论】:
标签: firebase react-native react-redux redux-thunk