Как структурировать документы mongoose, которые имеют отношения «один ко многим» и «многие к маю» одновременно? - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь спроектировать модель данных в mongoose, но меня смущает вопрос о том, какой подход лучше всего подходит для структурирования документов.

Изображение диаграммы отношений сущностей (ERD)

  • Пользователь может создавать компании, вакансии и резюме (один-ко-многим)
  • В компании есть вакансии (один-ко-многим)
  • Пользователь может подать заявку на работу (многие-то-многим)
  • работа может иметь резюме (многие-ко-многим)

Компания имеет отношение «один ко многим» с заданием, но пользователь имеет отношение «многие ко многим»с работой.Лучше ли почитать Иова?

Есть ли лучший способ структурировать документы?

Я впервые работаю с mongoose и Node.js.Любая помощь будет высоко ценится

User.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

// Define collection and schema for User
var User = new Schema({
    companies: [{
        jobs: [{
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Job'
        }]
    }],
    applied_jobs: [{
         type: mongoose.Schema.Types.ObjectId,
         ref: 'Job'
    }],
    resumes: [{ 
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Resume'
    }]
}, {
        collection: 'users'
    });

module.exports = mongoose.model('User', User);

Job.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

// Define collection and schema for Job
var Job = new Schema({
    created_by: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    },
    submitted_resumes: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Resume'
    }]
}, {
        collection: 'jobs'
    });

module.exports = mongoose.model('Job', Job);

Resume.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

// Define collection and schema for Resume
var Resume = new Schema({
  user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'
  }
}, {
    collection: 'resumes'
  });

module.exports = mongoose.model('Resume', Resume);
...