Creating Nested moongose Schema

Viewed 31

So, I am just starting with Node/Moongose and Typescript, and I am kind of stuck in creating a Schema for this nested JSON Database. I have started something and, I would like to know if I am on the right track, is the way of building nested schema. So please if anyone would help me it would be great. Thanks in Advance.

Data

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

}
]

Interface

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

Schema

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);
0 Answers
Related