Redux Thunk Firebase - 获取数组

达里奥·耶拉尔迪

我正在构建一个带有 redux、react-redux、redux-thunk 的 react 本机应用程序,并使用 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 数据库获取数据的最佳模式是什么?

谢谢你们

杰夫

把你通常会把在代码.then()里面.on()回调。这样,每次数据刷新时,您的setPost操作都会被分派。

例如:

...
postRef.on('value', snap => {
    var newPost = {
        title: snap.val().title,
        user: snap.val().user
    }
    dispatch(setPost(newPost))
});

您可能希望保留该数据库引用,以便以后可以停止收听

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React-Redux,读取通过redux thunk获取的对象时出现问题

来自分类Dev

redux thunk调度后从商店返回promise

来自分类Dev

如何在redux-thunk中使用axios / AJAX

来自分类Dev

减少redux-thunk样板

来自分类Dev

使用redux-thunk取消先前的异步操作

来自分类Dev

异步初始状态React-Redux Redux-Thunk

来自分类Dev

Redux Thunk Action Creator没有被调用

来自分类Dev

分派操作后Redux Thunk回调吗?

来自分类Dev

Redux thunk-嵌套调度的函数/动作

来自分类Dev

派遣Redux Thunk重新渲染React组件

来自分类Dev

如何在Redux Toolkit的createSlice中使用Redux-Thunk?

来自分类Dev

如何测试包含多个API请求和数组转换的redux-thunk操作?

来自分类Dev

Redux Thunk和异步操作

来自分类Dev

Redux Thunk与Redux定制中间件

来自分类Dev

React-Redux,读取通过redux thunk获取的对象时出现问题

来自分类Dev

响应redux,thunk满足事件过早发生

来自分类Dev

什么时候使用redux saga和redux thunk?

来自分类Dev

Redux Thunk的目的`[[[arg(s)])=> dispatch =>`?

来自分类Dev

Redux Thunk操作,axios返回多个值

来自分类Dev

派发Redux-Thunk

来自分类Dev

Redux Thunk Action Creator没有被调用

来自分类Dev

Redux Thunk-异步,与Promises链接的动作

来自分类Dev

Redux Thunk 如何实现

来自分类Dev

从 firebase 获取数组图像

来自分类Dev

Redux Thunk 共享异步对象

来自分类Dev

redux thunk 中的 AsyncStorage,动作未调度

来自分类Dev

Redux Thunk:动作必须是普通对象

来自分类Dev

Angular - Redux Thunk AppState 未定义

来自分类Dev

Redux Thunk - 是否可以取消 setTimeout