子类别的架构设计

时间:2019-06-30 18:00:12

标签: mongodb mongoose database-design

作为一个例子,我想要食物类别,子类别和实际菜单项本身。所有菜单项都必须具有类别,但并非所有菜单项都必须具有子类别。

所以,像这样:

仅类别示例:

Hamburgers
     - Bacon and cheese
     - Chicken 

类别和子类别的示例:

Pizza
    Traditional
       - Cheese and mushroom
       - Tomato and ham
   Deluxe
      - Bacon, ham, salami, steak

这意味着子类别是可选的。因此,在构建表单以添加菜单项时,子类别上应该没有选项吗?或者如果从下拉菜单中未选择任何内容,是否可以在数据库中插入空字符串?

这是我的架构,但不确定是否适合我的需求。

const menuSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    minlength: 5,
    maxlenth: 255
  },
  description: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 255
  },
  price: {
    type: Number,
    required: true,
    min: 0
  },
  category: {
    type: categorySchema,
    required: true
  },
  subcategory: {
    type: subcategorySchema
  }
});

const Menu = mongoose.model("Menu", menuSchema);

类别和子类别架构几乎相同,但是最好为类别和子类别使用2个单独的架构,或者只在类别架构中嵌入嵌入式子类别,或者这样做的最佳方法是什么? / p>

const categorySchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 255
  }
});

const Category = mongoose.model("Category", categorySchema);

0 个答案:

没有答案