【问题标题】:how to get data from firebase as array of key that array of item in ionic 3如何从firebase获取数据作为离子3中的项目数组的键数组
【发布时间】:2017-08-10 20:19:50
【问题描述】:

我已经处理了几个小时的问题。 我正在尝试做下一件事:

我需要获取课程列表,这些课程是根据 sets 课程定义的,并且我需要属于该人的所有课程的数组。

这是结构如何看待 firebase:

我真的搞砸了,想写什么就写什么,使用 MergeMap 之类的。但这对我没有帮助。 请帮帮我。

我的代码看起来像这样,我有一个提供者应该返回我的课程列表。但我无法超越单个mergeMap

上课服务:

getLessons(user: User): Observable<any[]>{
    return this.database.list(`/lessons/${user.uid}`)
    .mergeMap(key => this.database.list(`/lessons/${user.uid}/${key}`));
}

在课程页面:

private lessons: Lesson[];

ngOnInit(): void {
    this.loader.present();
    this.lessonService.getLessons(this.authenticatedUser)
    .subscribe(_setLessonSet => {
        _setLessonSet.forEach(set => {
            set.forEach(lessonItem => {
                this.lessons.push(lessonItem);
            });
        });
        this.loader.dismiss();
    });
}

我得到了这个错误:

错误错误:Reference.child 失败:第一个参数是无效路径 =“/lessons/eOqeJyTmQqQKa1bdzorMEDle4qD3/[object Object],[object Object]”。路径必须是非空字符串,并且不能包含“.”、“#”、“$”、“[”或“]”

感谢帮助!

【问题讨论】:

  • 你为什么使用mergeMap

标签: javascript ionic-framework firebase-realtime-database angularfire2


【解决方案1】:

我找到了答案

getLessonSets(): Observable<LessonSet[]>{
if(!this.authenticatedUser) return new EmptyObservable<LessonSet[]>();
return this.database.list(`/lessonsLists/${this.authenticatedUser.uid}`);}

和这个循环,比如:

this.LessonSets = this.lessonService.getLessonSets();
this.lessonSetsArray = [];
this.LessonSets.forEach(LessonsetItem => {
  LessonsetItem.forEach(OneLessonSet => {
    this.lessonSetsArray.push(OneLessonSet);
  });
});

并在视图(html 文件)中通过 async pip 对其进行迭代

*ngFor="let LessonsetItem of LessonSets | async

谢谢

【讨论】:

    猜你喜欢
    • 2017-07-26
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2022-07-12
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多