Вложенные элементы в моделировании мангусты - PullRequest
0 голосов
/ 21 мая 2018

Я должен создать базу данных в этом формате:

enter image description here

Я пытался сделать это так:

var mongoose = require("mongoose")
,   Schema   = mongoose.Schema;

var categorySchema = new Schema({
    _id:              String,
    subcategory:      {
      type: Schema.Types.ObjectId,
      ref: "Subcategory"
    },
    id:               String,
    name:             String,
    page_description: String,
    page_title:       String,
    parent_category:  String,
    c_showInMenu:     Boolean
  });

module.exports = mongoose.model("Category", categorySchema);

И я сделал то же самое для каждой подкатегории, но я назвал их «Подкатегория» и «SubsubCategory».Я в значительной степени новичок, я прочитал документацию по мангусте и также прошел онлайн-курс.Мне кажется, что я что-то знаю, но я не понимаю этого должным образом или что моя логика скрывается за этим.

Кроме того, мне удалось найти это о рекурсивных элементах в схемах, но я не знаюполностью понимаю это, и я не знаю, как реализовать это в моей базе данных: Рекурсивные элементы в схеме: моделирование Mongoose

1 Ответ

0 голосов
/ 21 мая 2018

Я проверил ваш код и изображение коллекции.

Вот что вы делаете неправильно.

  • Вам не нужно объявлять поле _id , этоСгенерировано автоматически.
  • Оставьте имена столбцов такими же, как они есть в заданном образе коллекции.

Это должно быть объявлением вашей схемы.Обратите внимание, что эта схема предназначена для всей коллекции, а не только для массива категорий.

    var mongoose = require("mongoose"),
        Schema   = mongoose.Schema;

    var mainSchema = new Schema({
        categories: [ {
        id:               String,
        image:             String,
        name:             String,
        page_description: String,
        page_title:       String,
        parent_category_id:  String,
        c_showInMenu:     Boolean
      }]
    });

Это всего лишь пример схемы, пожалуйста, добавьте в нее необходимые изменения.

...