【问题标题】:Next.js/Mongodb Assignment Status for Individual Student in a LMSLMS 中单个学生的 Next.js/Mongodb 分配状态
【发布时间】:2022-01-21 07:24:45
【问题描述】:

我正在构建一个 MERN(使用 Next.js)堆栈学习管理系统。目前,我已经为列出该课程作业的作业构建了前端。例如,如果我已登录,如果我转到 test.com/courses/PHIL204/Assignments,我将看到我的 PHIL 204 课程的所有作业。现在,在此表中,有一列显示“状态”,它表明作业是否已开始、已提交或已评分(只有 3 个值)。我的问题是,我如何存储/计算这个值?我的数据库中有学生和作业作为两个集合(在许多集合中)。我的数据库仍在开发中,因此我可以轻松遵循您的建议。我不认为 Assignments col 应该有一个“status”字段,因为这对于所有有该作业的学生来说都是一样的。如果您需要我的任何代码,我可以提供。如果学生已开始、提交或(由教授)评分(由教授)该作业,我主要寻求关于存储内容/如何存储的逻辑的帮助。

任何帮助将不胜感激。非常感谢。

【问题讨论】:

    标签: database mongodb database-design next.js


    【解决方案1】:

    实际上,GitHub Copilot 建议我在学生模式中我有这样的东西:

    const studentSchema = mongoose.Schema({
        studentFirstName : {type : String, required: true},
        studentLastName : {type : String, required: true},
        studentEmail : {type : String, required: true},
        studentClass : {type : String},
        studentAssignments : [{
            assignmentId : {type : Schema.ObjectId, ref: 'Assignments'},
            assignmentGrade : {type : String, enum : ["A","A-","B+","B","B-","C+","C","C-","D+","D","D-","F"]},
            assignmentStatus : {type : String, enum : ["Not Started", "Started", "Submitted", "Returned"]},
            assignmentRemarks : {type : String},
            assignmentCompeletedDate : {type : Date},
        }],
        studentTestQuizzes : [{
            testQuizId : {type : Schema.ObjectId, ref: 'TestQuizzes'},
            testQuizGrade : {type : String, enum : ["A","A-","B+","B","B-","C+","C","C-","D+","D","D-","F"]},
            testQuizStatus : {type : String, enum : ["Not Started", "Submitted", "Returned"]},
            testQuizRemarks : {type : String},
            testQuizCompletedDate : {type : Date},
        }],
        studentAnnouncements : [{
            announcementId : {type : Schema.ObjectId, ref: 'Announcements'},
            announcementStatus : {type : String, enum : ["Read", "Not Read"]},
        }],
        // we need a courseId to link the student to a course
    
    }, { collection: 'Students' });
    

    这应该可行。如果它不起作用或者我需要做更多的工作,我会更新这个线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多