Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过ngrx效果正确获取firebase数据_Firebase_Redux_Ngrx_Ngrx Store_Ngrx Effects - Fatal编程技术网

无法通过ngrx效果正确获取firebase数据

无法通过ngrx效果正确获取firebase数据,firebase,redux,ngrx,ngrx-store,ngrx-effects,Firebase,Redux,Ngrx,Ngrx Store,Ngrx Effects,我第一次向你寻求帮助,因为我陷入了困境。 我正在使用ngrx效果从firebase实时数据库将一些商店物品加载到app init上的购物车中。作为有效负载,我得到的是整个firebase数据库快照对象,而不仅仅是商店项目本身,因此ngrx商店接收到一个它无法理解的对象,并且应用程序状态没有改变 请检查照片:当console.logged()时,我看到了我需要的确切对象。但是Redux开发工具揭示了真正的交易,我不知道如何解决这个问题。有人能给我一些建议吗?非常非常感谢 效果如下所示: @Effe

我第一次向你寻求帮助,因为我陷入了困境。 我正在使用ngrx效果从firebase实时数据库将一些商店物品加载到app init上的购物车中。作为有效负载,我得到的是整个firebase数据库快照对象,而不仅仅是商店项目本身,因此ngrx商店接收到一个它无法理解的对象,并且应用程序状态没有改变

请检查照片:当console.logged()时,我看到了我需要的确切对象。但是Redux开发工具揭示了真正的交易,我不知道如何解决这个问题。有人能给我一些建议吗?非常非常感谢

效果如下所示:

@Effect()
getShopItems: Observable<any> = this.actions.pipe(
    ofType(shopActions.GET_ITEMS),
    switchMap(() => {
        return of(this.database.ref('cart').once('value', snap => {
            snap.forEach(childSnap => childSnap.val());
            // snap.forEach(childSnap =>
            // console.log(childSnap.val()));
        }))
            .pipe(
                map((payload) => {
                    return {
                        type: 'GET_ITEMS_SUCCESS',
                        payload: payload
                    };
                }
            ));
    })
);

使用来自的,而不是来自的

import { from } from 'rxjs';

@Effect()
getShopItems: Observable<any> = this.actions.pipe(
    ofType(shopActions.GET_ITEMS),
    switchMap(() => {
        return from(this.database.ref('cart').once('value', snap => {
            snap.forEach(childSnap => childSnap.val());
        }))
            .pipe(
                map((payload) => {
                    return {
                        type: 'GET_ITEMS_SUCCESS',
                        payload: payload
                    };
                }
            ));
    })
);
从'rxjs'导入{from};
@效果()

getShopItems:可观察的

使用来自
而不是

import { from } from 'rxjs';

@Effect()
getShopItems: Observable<any> = this.actions.pipe(
    ofType(shopActions.GET_ITEMS),
    switchMap(() => {
        return from(this.database.ref('cart').once('value', snap => {
            snap.forEach(childSnap => childSnap.val());
        }))
            .pipe(
                map((payload) => {
                    return {
                        type: 'GET_ITEMS_SUCCESS',
                        payload: payload
                    };
                }
            ));
    })
);
从'rxjs'导入{from};
@效果()

getShopItems:Observable

是否执行
案例shopActions。是否成功获取\u ITEMS
是否调用?是的,是否执行。这是在app init.Update上调用的最后一个东西:我现在知道我正在接收一个ZoneAwarePromise作为GET_ITEMS_SUCCESS的有效负载。从中提取必要的数据似乎是现在的主要问题。
case shoppactions.GET\u ITEMS\u SUCCESS
GET call?是的。这是在app init.Update上调用的最后一个东西:我现在知道我正在接收一个ZoneAwarePromise作为GET_ITEMS_SUCCESS的有效负载。从中提取必要的数据似乎是现在的主要问题。我真的看不出有什么区别,它们都返回可观测值,遍历它们是一样的。你能进一步发表评论吗?@分享主义行不通吗?如果我指给你看-,firebase呼叫返回的承诺将不会由of正确处理,但应该由@SharisM正确处理。还有,这个参考-好的,现在更清楚了!谢谢你,先生。我将尝试在我的代码中实现这些知识,看看会发生什么。感谢您的指导,我在代码中发现了更多的缺陷,并修复了我的问题。我认为你的回答很有帮助,但似乎我的名声太小,现在还不能真正让人听到我的声音。我真的看不出有什么区别,它们都返回可观测值,遍历它们是一样的。你能进一步发表评论吗?@分享主义行不通吗?如果我指给你看-,firebase呼叫返回的承诺将不会由of正确处理,但应该由@SharisM正确处理。还有,这个参考-好的,现在更清楚了!谢谢你,先生。我将尝试在我的代码中实现这些知识,看看会发生什么。感谢您的指导,我在代码中发现了更多的缺陷,并修复了我的问题。我认为你的回答很有帮助,但现在看来我的名声太小,无法让别人听到我的声音。