在使用相同方法之前更新snapshotChanges中的键

时间:2017-12-19 22:39:47

标签: angular typescript firebase angularfire2

因为在最新版本中从angularfire2中删除$ key我试图在我的getAll服务方法中返回之前添加密钥,如:

getAll(): Observable<any> {
return this.loginService.loginData.take(1).flatMap( userdata => {
                var RefItems = this.loginService.afDB.list(`/games/${userdata.gameid}/categories/`);
                RefItems.snapshotChanges().map(categories => {
                    return categories.map(m => ({ key: m.key, ...m.payload.val() }));
                });
                return RefItems.valueChanges().map( categories => {
                    return categories.map((category) => {
                        category["matches"] = this.matchesService.getAll(category["key"]);
                        return category;
                    })
                });
            })
        }

但似乎要迟到(关键不在valueChanges方法中),有人对我有所了解吗? :)

1 个答案:

答案 0 :(得分:1)

我不知道问题到底在哪里。 并不确定是什么部分:

py -m timeit "'validate_field_name'.split('_', maxsplit=1)[-1]"
1000000 loops, best of 3: 0.568 usec per loop

py -m timeit "'validate_field_name'.split('_', 1)[-1]"
1000000 loops, best of 3: 0.317 usec per loop

可以,但您可以尝试修改代码以形成:

 return RefItems.valueChanges().map( categories => {
                return categories.map((category) => {
                    category["matches"] = 
 this.matchesService.getAll(category["key"]);
                    return category;
                })
            });

它可能会调用可能无法将订阅分配给Observable,但您会想出来。希望它对你有所帮助