Построение моделей Mon goose для API Express Nodejs с refpath - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в построении остальных API с mon goose и express и у меня есть вопрос о том, как правильно использовать refPath в моих файлах Models и разрешить массив элементов.

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

Я также включу скриншот, который визуально изображает отношения, которые я пытаюсь создать.

Те, кто отвечают на вопросы здесь, являются БОГАМИ, и я ценю всю помощь, которую это сообщество оказало мне за эти годы!

const mongoose = require("mongoose");
const slugify = require("slugify");

const AlertSchema = new mongoose.Schema({
  parentId: {
    type: mongoose.Schema.ObjectId,
    required: true,
    refPath: "parentModel",
  },
  parentModel: {
    type: String,
    required: true,
    enum: ["orgs", "clients"],
  },
  status: { type: String, default: "no-status" },
  departments: [{ type: mongoose.Schema.Types.ObjectId, ref: "orgs" }],
  createdAt: { type: Date, default: Date.now },
  createdByType: [{ type: mongoose.Schema.Types.ObjectId, ref: "users" }],
  createdById: [{ type: mongoose.Schema.Types.ObjectId, ref: "users" }],
  groups: [{ type: String, default: "unGrouped" }],
  stage: [{ type: mongoose.Schema.Types.ObjectId, ref: "stages" }],
  children: { type: String },
  resource: {
    type: String,
    match: [
      /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/,
      "Please use a valid URL with HTTP or HTTPS",
    ],
  },
  notes: [{ type: mongoose.Schema.Types.ObjectId, ref: "notes" }],
  comments: [{ type: mongoose.Schema.Types.ObjectId, ref: "comments" }],
  priority: { type: String },
  assignedTo: [{ type: mongoose.Schema.Types.ObjectId, ref: "users" }],
  title: {
    type: String,
    required: [true, "Please add a title"],
    maxlength: [50, "Title cannot be more than 50 characters"],
  },
  message: {
    type: String,
    required: [true, "Please add a message"],
    maxlength: [500, "Message cannot be more than 500 characters"],
  },
  slug: String,
});

//create alert slug from the title
AlertSchema.pre("save", function (next) {
  console.log("Slugify Ran", this.name);
  this.slug = slugify(this.title, { lower: true });
  next();
});



module.exports = mongoose.model("Testalert", AlertSchema);

Желаемые отношения диаграмма:

enter image description here

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