我正在尝试找出一种有效的结构,将学术时间表存储在Firestore中。
我需要解决的问题:
这是我现在拥有的结构:
courses
- course_id: string
- duration: number (weeks, eg: 24)
- end_time: number (timestamp of the last course day)
- start_time: number (timestamp of the first course day)
- name: string
modules
- module_id: string
- lectures: array
- lecture_id
- name: string
- code: string
- no_students: number
classes
- class_id: string;
- start_time: string (eg: 10:00)
- end_time: string (eg: 11:00)
- weekday: string (eg: Monday)
- module: map (a copy of module object to reduce reads)
- start_week: number
- end_week: number
timetables
- timetable_id: string
- classes: array
- class_id
- duration: number (duration in weeks, eg: 11)
- semester: number
- week: string (current week, eg: 4)
users
...
- timetable_id: string
单独的班级集合将使查询更加容易,以便与出勤集合进行比较。
要阅读时间表,请获取用户文档,然后获取时间表文档,然后使用firestore.getAll()
获取类。这导致大量文档读取。
要更新当前星期,我需要更新每个时间表文档。
有什么更好的方法来解决这个问题?
感谢您的时间和帮助。
答案 0 :(得分:1)
最好在Firestore中的不同文档中重复重要数据。
假设戴安娜想通过电话阅读时间表,她的时间表有4门课程,3个模块,10个班级。将所有这些详细信息放在一个文档中,因此当她想在应用程序屏幕上查看时间表时,应用程序会读取一个文档以完成时间表。每个学生都有自己的继承人时间表文件