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