我知道可以将一个对象存储在另一个对象中。但我不想使用这种结构。
例如,我希望有以下结构:
{
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中的表一样。
我使用Angular 2中的angularfire2来访问firebase数据库。 第一个问题是我应该创建和使用多少服务?我想我可以创建一个courseService,一个teacherService。 coursePerTeacherService有用吗?或者只使用一种不同方法的服务更好? 我的问题不是在每个服务中创建一个CRUD。但是我怎样才能创建一个页面,告诉我John Schmidt老师能够教授德语和英语。约翰史密斯只教英语。
我的问题是我目前的成功是我只能显示存储在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-Databases。
对不起英语不好,在我的国家,它是在半夜。
答案 0 :(得分:0)
对于来自sql背景的Firebase问题,此播放列表会为您提供很多帮助https://www.youtube.com/watch?v=WacqhiI-g_o&list=PLl-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s
大多数情况下,您只需在组件中插入firebase服务并在那里执行逻辑。如果您需要额外的服务(不是Firebase)或者不想复制您的代码,那么最好只拥有一个TeacherService,然后取决于您是否想要延迟加载您创建课程服务的课程。如果在同一个屏幕中显示教师和课程,您可以在一个服务中完成所有操作。因此,要恢复它,最好在您的观看后为您的服务建模。
如果您在服务中使用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
}