我是Meteor的新手,为教师创建一个流星网络应用程序,以便他们跟踪他们教授的课程和每个班级的学生。登录后,教师会看到他们亲自教授的所有课程的运行列表,并且能够选择每个单独的课程以查看该特定班级中的学生列表,并可选择删除,编辑或加。然后,教师将能够选择单个学生的姓名,这将使他们进入一个页面,教师可以在该页面上传与他们选择的特定学生相对应的文档(pdf,word文档等)。我遇到的问题是我究竟能够显示,添加和编辑适用于每位教师的信息,因为会有很多教师使用该应用程序,每个教师都有不同的班级和学生。我有一个课程和学生的单一集合,但似乎无法围绕如何只显示与当前登录的教师相对应的项目。最好的方法是什么?
答案 0 :(得分:0)
教师收藏可以有他们教授的一系列课程。
类集合可以有一个对象数组。每个对象都有一名教师和一组学生
教师收藏
teacher [
classes: {class_id1, class_id2, class_id3}
]
课程集合
classes [
{
class: history
{teacher: teacher_id1
children: { childid1, child_id2, child_id3 }
}
{teacher: teacher_id2
children: { child_id1, child_id2, child_id3 }
}
},
{
class:geography {
next iteration
}
} ]
您可以通过为教师班级学生组合命名文件夹来管理文件上传
答案 1 :(得分:0)
我有一个班级和学生的单一集合
听起来你的意思是1个收集总数(到目前为止),而不是每个收集课程和学生。
这个问题非常重要,因为您可能还想处理:
如果我对此进行建模,我将从这些集合开始:
注意我列出了“科目”而不是“班级”。课程将接下来。一个主题可能是“历史4”,它带有一本教科书,可能还有一些现有的测试和家庭作业,并且年复一年地提供。或者每个学期可能有2名教师教授历史4。
上述每个集合代表的概念比一个学期更“耐用”。一位老师(希望)在学校里有很长的职业生涯。学生可能会在那里4年。科目,虽然它们可能会随着时间的推移而发展,但保持相对稳定。
下一步是开始在所有这些集合中建立关联。这里是“课堂”发挥作用的地方。为了避免使用保留字,我们称之为“schoolClass”。
学校课程是学校向学生提供固定课程的学科。例如2017学年,第一学期。由老师教授,学生参加。由于持久集合中的每个项目都有一个_id,现在您可以一次性完成关联:
{
subjectId: 'abc123',
teacherId: 'def456',
students: ['ghi789', 'xxx123', ... ],
year: 2017,
semester: 1,
schedule: [
{
day: 'M',
time: '1030'
},
{
day: 'Th',
time: '1500'
}
]
}
这有意义吗?这解决了我上面提到的所有问题。它提供了良好的灵活性,并在一个主题和在预定时间提供给学生的主题之间保持重要的区别。
还有那里的时间表(方便),表明该课程在该学期满足2x /周。
现在您可以进行查询:
你会得到一个阵列。数组中的每个项目都会为您提供与主题的关联(因此您可以显示历史记录4或数学1或其他内容)以及学生列表。
您可以对学生进行迭代,并使用他们的_id查询学生集合以显示他们的姓名。现在,您可以通过schoolClass和student ID为该班级的学生创建上传文档的关联。
你可能想要那些上传文件的另一个集合。每个项目可能如下所示:
{
schoolClassId: 'zzz789',
studentId: 'ghi789',
documents: [] // however you want to handle that...
}
从关系数据库借用一个术语,那些id(schoolClassId,studentId)被称为外键。他们只是将引用设置回另一个集合中的项目。
要使一切正确和有效,这将是一项相当大的工作,但我认为它将为您提供很大的灵活性并解决您的要求。