如何使用带有mongoDB的nodejs一对一,一对多关系

时间:2019-03-07 11:50:37

标签: node.js mongodb insert foreign-keys relationship

我的数据库中有两个正在关注的集合

  1. 学生
  2. 课程

我要插入类似one-to-oneone-to-many关系的数据。

示例

我发送了以下form-data中的数据

  1. 名称
  2. 电子邮件
  3. 电话
  4. 密码
  5. 课程名称
  6. course_cost

上述数据的nameemailphonepassword存储在学生表中。

然后course_namecourse_coststudent_id存储到课程表中。

这是我的代码:

route/students.js

const express = require('express');
const path = require('path');
const config = require('../config/database');


const router = express.Router();

let Student = require('../models/student_model');

router.post('/add_student', function(req, res){
    let data = new Student();
    data.name = req.body.name;
    data.email = req.body.email;
    data.phone = req.body.phone;
    data.password = req.body.password;

    data.save(function(err, data){
        if(err) throw err;
        res.send(data);
    });

});

module.exports = router;

models/student_model.js

const mongoose = require('mongoose');

let StudentSchema =  mongoose.Schema({
    name:{
        type: String
    },
    email:{
        type: String
    },
    phone:{
        type: String
    },
    password:{
        type: String
    },

    }, { collection: 'student' });


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

这是我的API调用: enter image description here

  

我上面的代码已完成存储在student表中的学生数据,但是我不知道如何添加一对一关系

3 个答案:

答案 0 :(得分:0)

我认为首先您需要重新设计架构。考虑到您有针对学生和课程的两个不同的馆藏,您需要在学生中参考课程,在课程中需要参考学生。这将帮助您执行以下类型的查询。

  1. 获取x学生的课程列表。
  2. 获取已注册ABC课程的学生列表。 在学生模式中添加课程数组,并在课程模式中添加学生数组。 签出this

答案 1 :(得分:0)

在您的路线中,您需要输入姓名,电子邮件,电话,密码。然后,您尝试插入course_name,course_cost。您需要在课程集合中插入student_id

答案 2 :(得分:0)

这是一个古老的问题,但是,我相信许多人可能正在寻找这种相似的架构关系设计的解决方案。您需要在模型中声明一对多架构关系。

const StudentSchema = new Schema({
    name: String,
    email: String,
    phone: String,
    password: String,
    course: [courseSchema] //this will be the relationship
})
const CourseSchema = new Schema({
    course_name: String, 
    course_cost: String
})

const Student = mongoose.model('student', StudentSchema)

module.export = Student;