Внешний ключ и отношение первичного ключа в mongodb node js - PullRequest
0 голосов
/ 24 апреля 2020

Я использую node js с mongoDb в качестве базы данных. Я создал 2 предмета схемы имени и класс с различными идентификаторами. в 3-м расписании имени схемы я хочу, чтобы эти идентификаторы в первых двух схемах стали внешним ключом в схеме расписания. это возможно в Mongodb?

Тематическая схема

var mongoose = require('mongoose');
var shortid = require('shortid');


var SubjectSchema = new mongoose.Schema ({

    subject_id: {

        required: true, 
        'type': String,
        'default': shortid.generate
    },

    subject_name: {
        type:String,
        required:true,
    },

    subject_darjah:{
        type:String,
        required:true,
    }

});

var Subject = mongoose.model('Subject', SubjectSchema);
module.exports = Subject;

Схема класса

var mongoose = require('mongoose');
var shortid = require('shortid');


var ClassroomSchema = new mongoose.Schema ({

    classroom_id: {

        required: true, 
        'type': String,
        'default': shortid.generate
    },

    classroom_name: {
        type:String,
        required:true,
    },

    classroom_blok:{
        type:String,
        required:true,
    },

    classroom_floor: {
        type:String,
        required:true,
    },




});

var Classroom = mongoose.model('Classroom', ClassroomSchema);
module.exports = Classroom;

Схема расписания

var mongoose = require('mongoose');
var shortid = require('shortid');

var TimetableSchema = new mongoose.Schema ({

    timeslot_id: {
        required: true, 
        'type': String,
        'default': shortid.generate
    },
})

1 Ответ

1 голос
/ 24 апреля 2020

В MongoDB есть понятие ссылки, пожалуйста, проверьте официальный документ для получения дополнительной информации. И вам не нужно иметь свои собственные поля идентификатора. MongoDB добавляет автоматически сгенерированный уникальный _id, поданный во все документы.

это примерно так:

timeslotRef: {
   type: Schema.Types.ObjectId,
   ref: "TimeSlot",
   required: true, 
},

ссылка ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...