Планирование схемы Mongoose: с помощью ссылки на ObjectID или с использованием массива типа: [otherSchema]? - PullRequest
0 голосов
/ 06 июня 2019

В настоящее время я планирую структуру базы данных для приложения, которое я создаю, и что-то в этот связанный ответ поднял для меня несколько вопросов.

В структуре, предложенной Шивамоминогда он ссылается на другую коллекцию напрямую, другими словами, внутри одной схемы он определяет тип поля как массива другого типа схемы.Пример:

import { Schema } from "mongoose";
import { QuestionSchema } from "./question-schema";
const mongoose = require('mongoose');

export const QuestionSetSchema: Schema = new Schema({
  questionSet: {
    type: [QuestionSchema],
    validate: {
      validator: function(value: any) {
        return value.length === 12;
      },
      message: 'Question set must be 12.'
    }
  },
}, {
  timestamps: true
});

В других случаях он использует только ссылку ObjectID на другую схему / коллекцию:

export const CandidateSchema: Schema = new Schema({
  name: String,
  email: String, // you can store other candidate related information here.
  totalAttempt: {
    type: Number,
    default: 0,
    validate: {
      validator: function(value: number) {
        return value === 3;
      },
      message: 'You have already done three attempts.'
    }
  },
  candidateQuestionAnswers: {
    type: [Schema.Types.ObjectId],
    ref: 'CandidateQuesAnswer'
  }
}, {
  timestamps: true
});

Каковы варианты использования для каждого из вышеперечисленных?Встраивает ли метод "type: [otherSchema]" экземпляры этой коллекции или предоставляет их свойства только той схеме, из которой они вызваны?

...