猫鼬建模中的嵌套元素

时间:2018-05-21 07:19:46

标签: javascript mongoose nested data-modeling

我必须以这种格式创建一个数据库:

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);

我为每个子类别做了同样的事情,但我将它们命名为“Subcategory”和“SubsubCategory”。我几乎是一个新手,我已经阅读了关于mongoose的文档,我也跟着在线课程。我觉得我知道一些事情,但我不理解它或我背后的逻辑是错误的。

另外,我已经设法在Schemas中找到关于递归元素的内容,但我并不完全理解它,我不知道如何将它实现到我的数据库中:Recursive elements in Schema : Mongoose modelling

1 个答案:

答案 0 :(得分:0)

我检查了你的代码和收藏图片。

这是你做错了什么。

  • 您不需要声明 _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
      }]
    });

这只是架构的一个示例,请为其添加必要的更改。