首页 > 解决方案 > Mongoose Schema 规划:使用 ObjectID 引用还是使用类型数组:[otherSchema]?

问题描述

我目前正在为我正在构建的应用程序规划数据库结构,这个链接答案中的某些内容向我提出了一些问题。

在 Shivam 提出的结构中,他有时会直接引用另一个集合,换句话说,在一个 Schema 中,他将字段的类型定义为另一种模式类型的数组。例子:

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]”方法是否实际上嵌入了该集合的实例,还是仅将它们的属性提供给调用它们的 Schema?

标签: mongodbmongoosedatabase-designschema

解决方案


推荐阅读