Angular 2 Firebase-如何实现SQL行为?

Angular 2 Firebase-如何实现SQL行为?,angular,firebase,firebase-realtime-database,angularfire2,Angular,Firebase,Firebase Realtime Database,Angularfire2,我知道可以将一个对象存储在另一个对象中。但我不想使用这种结构 例如,我希望具有以下结构: { courses: 01: { courseName: "English" }, 02: { courseName: "German" } teachers: 01: { lastname: "smith", for

我知道可以将一个对象存储在另一个对象中。但我不想使用这种结构

例如,我希望具有以下结构:

{
    courses:
        01: {
            courseName: "English"
        },
        02: {
            courseName: "German"
        }
    teachers:
        01: {
            lastname: "smith",
            forename: "john"
        },
        02: {
            lastname: "schmidt",
            forename: "john"
        }
    coursePerTeacher:
        01: {
            courseID: "01",
            teacherID: "02"
        },
        02: {
            courseID: "02",
            teacherID: "02"
        },
        03: {
            courseID: "01",
            teacherID: "01"
        }
}
每个节点都应该类似于SQL中的表

我在Angular2中使用angularfire2访问firebase数据库。 第一个问题是我应该创建和使用多少服务?我想我可以创建一个课程服务,一个教师服务。coursePerTeacherService有用吗?还是只使用一个具有不同方法的服务更好? 我的问题不是在每个服务中创建CRUD。但是,我如何才能创建一个页面,向我展示约翰·施密特老师能够教德语和英语。约翰·史密斯只教英语

我的问题是,我目前的成功在于我只能显示存储在coursePerTeacher节点中的内容。但是从这一点上,我想由老师总结一下,并显示出引用id的后面是什么。换句话说,就是名字

我真的不知道该怎么编码。组件类中的部分是什么,服务类中的部分是什么

下一件事是我可以对这种结构的行为做些什么

{
    categories:
        01: {
            cat_name: "java programming",
            cat_description: "here is everything you need to know about java"
        },
        02: {
            cat_name: "html",
            cat_description: "...."
        }
    topics:
        01: {
            topic_subject: "need help in java",
            topic_date: "08/01/2017",
            topic_cat: "01",
            topic_by: "01"
        },
    replies:
        01: {
            reply_content: "java doesn't work anymore?",
            reply_date: "08/01/2017",
            reply_topic: "01",
            reply_by: "01",
        },
        02: {
            reply_content: "what's your specific question?",
            reply_date: "08/01/2017",
            reply_topic: "01",
            reply_by: "02",
        },
    users:
        01: {
            username: "newbie",
        }
        02: {
            username: "proCoder",
        }
}
我现在没有一个真正的例子。我希望我的意思是可以理解的,并且结构中没有错误

如果引用不在特定节点内,我应该如何工作?如果它在每个对象中,我应该如何工作

我真的有点麻烦。一个详细的教程或一个简单的例子(组件和服务)会非常好

我以前从未使用过NoSQL数据库


对不起,糟糕的英语,在我的国家,是在深夜。

< p>对于来自SQL背景的你的FialBasic问题,这个播放列表会帮助你很多

大多数情况下,您只需在组件中插入firebase服务并在其中执行逻辑即可。如果你需要额外的服务(不是Firebase)或者不想复制你的代码,最好只有一个TeacherService,然后取决于你是否想延迟加载你的课程,你可以创建一个CourseService。如果在同一屏幕上显示教师和课程,您可以一次完成所有服务。因此,要继续,最好根据您的视图对您的服务进行建模

如果您要在服务中使用firebase,您可以执行以下操作: 从“angularfire2”导入{AngularFire,FirebaseListObservable}; 从“@angular/core”导入{Injectable}

@Injectable()
export class TeacherService{
  constructor(private af: AngularFire) {}

  getTeachers(): FirebaseListObservable {
    return this.af.database.list('/teachers');
  }

  addTeacher(teacher: string) {
    return this.af.database.list('/teachers').push(teacher);
  }

  deleteTeacher(teacher: any) {
    return this.af.database.list('/teachers').remove(teacher)
  }

getCourses(teacher:any){
    return this.af.database.list('/teachers/'+teacher.key+'/courses') //this depends on how you structure your db
}

也来看看这个视频