【问题标题】:User to User Database Object Structure用户到用户数据库对象结构
【发布时间】:2018-07-07 14:05:58
【问题描述】:

在教师到学生应用程序中构建数据库中的对象的最佳做法是什么?更具体地说,一个老师将有多个学生,而学生可能有多个要与之互动的老师。现在,老师教的每个班级都有一个“班级 ID”,当学生注册时,他们会将相同的班级 ID 添加到他们模型中的列表中。当老师想查看花名册时,我使用

Student.find({"class-id": "abc123"}, function(err, student){
    if(err){
       console.log(err)
    } else {
       res.render("/roster", {student: student});
    }
 });

“abc123”是一个示例类代码。

目前这是非常基本的代码——只是启动一个粗略的应用程序。我应该在教师和学生之间建立某种不同的数据库结构吗?

对于这个基本的、可能令人困惑的问题,我很抱歉,我对 Web 开发很陌生,只是不想把自己画到一个角落里。

我正在使用 MEAN 堆栈,但我认为这是一个更具概念性的问题。

谢谢

【问题讨论】:

  • 听起来您的数据模型是关系型的。您确定要使用 MongoDB 吗?
  • @dmfay 我想关系数据库更适合我,因为它需要大量的数据输入,而且它不需要非常灵活。然而,Mongoose 是我目前所知道的——当然愿意学习 MySQL 并对不同的数据模型进行一些研究。感谢您的洞察力。

标签: database express mongoose mean-stack


【解决方案1】:

dmfay 的评论很有见地。对于关系模型,使用猫鼬是次优的。但是,您当然仍然可以使用它。它会是这样的(顺便说一下,你对此不清楚,但它暗示每个学生和老师都有多个班级 ID,我在这个假设下工作)

var mongoose = require("mongoose");

var StudentSchema = new mongoose.Schema({
    //other student details
    teachers: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Teacher"
    }],
    classIds: [STRING]
});

module.exports = mongoose.model("Student", StudentSchema);

然后教师模式将遵循相同的路线:

var mongoose = require("mongoose");

var TeacherSchema = new mongoose.Schema({
    //other teacher details
    students: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Student"
    }],
    classIds: [STRING]
});

module.exports = mongoose.model("Teacher", TeacherSchema);

然后,你是怎么做的,当一个学生注册一个班级时,你会在他们的 classIds 数组中找到所有具有该 classId 的老师,你循环他们将学生添加到他们的每个学生数组中,然后添加他们(教师)到学生的教师数组中。

当你想搜索一个班级的所有学生时,你可以像以前一样进行,除了 classIds 是一个字符串数组,而不是单个字符串,你需要检查它们是否匹配

【讨论】:

  • 谢谢!这正是我最终要做的。
  • 当您在 stackoverflow 上得到正确答案时,请将其标记为正确,如果您愿意,请点赞。这很重要,因此 1) 浏览问题的用户知道您已经得到了答案,并且不要浪费时间试图帮助只是意识到问题已经得到回答。 2)所以如果有人有类似的问题,他们知道这里有答案,并且最终不会创建重复
猜你喜欢
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 2017-06-15
相关资源
最近更新 更多