首页 > 解决方案 > 创建嵌套的月光模式

问题描述

所以,我只是从 Node/Moongose 和 Typescript 开始,我有点卡在为这个嵌套的 JSON 数据库创建一个模式。我已经开始了一些事情,我想知道我是否走在正确的轨道上,是构建嵌套模式的方式。所以,如果有人能帮助我,那就太好了。提前致谢。

数据

[{
   "a_class":[
   {    
    "brand":"A-class",
    "id":"1",
    "year":"2015"
    "price":"12665"
    ...
    "engine_spec":{
     ...
     }
     ...
      }]

}
]

界面

import { Document } from 'mongoose';
export default interface ICars extends Document {
   a_class: BrandList[],
}


interface BrandList {
 brand: string;
 id:number;
 year:number;
 main_image: string;
 price:number;
 transmission:string;
 fuel_type:string;
 seating_capacity:number;
 engine:number;
 engine_specs:Specs;
 volume_weights:Volume;
 performance: Performance
 images_interior: Interior
 images_exterior: Exterior
}

interface Specs {
    power:number;
    power_per_litre:number;
    torque:number;
    fuel_system:number
}

interface Volume {
    max_weights:number;
    fuel_tank:number
}


interface Performance {
    acceleration:number;
    maximum_speed:number;
    fuel_urban:number;
    fuel_extra_urban:number
    fuel_combined:number
}

interface Interior {
    image_one:string;
    image_two:string;
    image_three:string;
    image_four:string;
}

interface Exterior {
    image_one:string;
    image_two:string;
    image_three:string;
    image_four:string;
}

架构

import mongoose, { Schema } from 'mongoose';

import ICars from '../interfaces/cars'

const CarsSchema: Schema = new Schema({
  a_class:[BrandSchema],
})


const BrandSchema: Schema = new Schema(
    {
      brand:{type:String},
      ...
      engine_specs:[Specs],
      volume_weights:[Volume],
      performance: [Performance],
      images_interior: [Interior],
      images_exterior: [Exterior],
    }
)

    const Exterior:Schema = new Schema({
    image_one:{type:Number},
    image_two:{type:Number},
    image_three:{type:Number},
    image_four:{type:Number},
})


export default mongoose.model<ICars>('Cars', CarsSchema);

标签: node.jstypescriptmongodbmongoosemongoose-schema

解决方案


推荐阅读