账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mongoose关联表新增数据怎么关联
    48
    0

    我在做一个考试系统,系统中有4个集合:
    教师集合:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    var TeacherSchema = new Schema({
      userId: Number, // 教师工号
      userName: String, // 用户名
      passWord: String, // 密码
      _papers:[{ type: Schema.Types.ObjectId, ref: 'Paper' }]
    })
    module.exports = mongoose.model('Teacher', TeacherSchema);

    学生集合:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    var StudentSchema = new Schema({
        userId: Number, // 学号
        userName: String, // 用户名
        passWord: String, // 密码
        grade: Number, // 年级 1~6 分别代表一年级到六年级
        class: Number, // 班级
        exams:[{ // 参加的考试
          _papers:{ type: Schema.Types.ObjectId, ref: 'Paper' },
          date: Date,
          score:Number
        }]
    })
    module.exports = mongoose.model('Student', StudentSchema);
    

    试卷集合:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    var PapersSchema = new Schema({
        name: String, // 试卷名
        totalPoints: Number, // 总分
        time: Number, // 考试时间
        startTime: Date, // 开始时间
        examnum: Number, // 考试人数
        _teacher: { type: Schema.Types.ObjectId, ref: 'Teacher'}, // 老师
        _questions: [{ type: Schema.Types.ObjectId, ref: 'Question' }] // 题
    })
    module.exports = mongoose.model('Paper', PapersSchema);

    问题集合:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    var QuestionSchema = new Schema({
      name: String, // 问题名
      _teacher: { type: Schema.Types.ObjectId, ref: 'Teacher' }, // 所属老师
      _papers: [{ type: Schema.Types.ObjectId, ref: 'Paper' }], // 所属试卷
      content: String, // 内容
      selection: [String], // 选项
      type: {type:String,enum:[ // 类型
        'single', // 单选
        'multi', // 多选
        'Q&A', // 简答
        'judgement' // 判断
      ]},
      score: Number, // 分值
      answer: String // 答案
    });
    module.exports = mongoose.model('Question', QuestionSchema);

    在系统中,教师可以增加试卷,这个时候我就不知道该怎么保存前台传过来的数据。数据中既有试卷的信息,也有很多题目。题目都属于该试卷,改试卷又属于当前登录系统的老师(即创建试卷的老师)。
    怎么才能让试卷、教师、问题关联起来啊,ref存的是_id,然而这些新增的数据,是保存之后才有_id的啊。
    这个问题已经困扰我很多天了,希望有大神能够解答一下,感激不尽!!
    先说声谢谢了~

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 我就是最帅气 普通会员 1楼

      在mongoose中,可以通过Model.create()方法来创建模型,并且可以使用Model.add()方法来添加新的数据到模型中。这两个方法都可以接受模型和一个或多个对象作为参数。

      以下是一个例子:

      ```javascript const User = mongoose.model('User', { name: String, email: String, password: String });

      User.create({ name: 'John Doe', email: 'johndoe@example.com', password: 'password' }, (err, user) => { if (err) { console.log(err); } else { console.log(user); } }); ```

      在这个例子中,我们首先创建了一个名为User的模型,并且定义了它的三个字段:nameemailpassword。然后,我们使用User.create()方法来创建一个新的用户,并且传入了用户的名字、电子邮件和密码。

      如果在创建用户的过程中出现错误,我们会打印出错误信息。如果一切正常,我们会打印出创建的新用户。

      如果你想添加一个新的用户到模型中,你可以使用Model.add()方法。例如:

      javascript User.add({ name: 'Jane Doe', email: 'janedoe@example.com', password: 'password' }, (err, user) => { if (err) { console.log(err); } else { console.log(user); } });

      在这个例子中,我们使用User.add()方法来添加一个新的用户,并且传入了用户的名字、电子邮件和密码。如果在添加用户的过程中出现错误,我们会打印出错误信息。如果一切正常,我们会打印出添加的新用户。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部