MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como posso projetar o esquema para o produto abaixo usando o mangusto?

//Schema Defination and model.js
var ProductSchema = new mongoose.Schema({
    name:String,
    category:String,
    subcategory:[{
        type:String,
        model:[{
            type:String,
            colour:[{
                name:String,
                image:String
            }],
            size:[{
                val:Number,
                price:Number
            }]
        }]
    }],
    description:String,
    created_at:{ type: Date },
    updated_at:{ type: Date, default: Date.now },
    updated:{type: Date, default: Date.now}
}, { versionKey: false },{strict: false});
export default mongoose.model('Product', ProductSchema);

Armazenando detalhes do produto na coleção de banco de dados1. Armazenamento Estático
//Static Storing into Database
var ProductSchema = require('path/to/ProductSchema.js');
app.post('/Store_Product_Details',function (req,res) {
    var Name = 'Mens Formal Shirts';
        var Category = 'Shirts';
    var SubCategory = [{
        type: "slimline",
        model: [{
            "type": "twill",
            "colour": [{
                "name": "red",
                "image": "red.jpg"
            },
                {
                    "name": "white",
                    "image": "white.jpg"
                }
            ],
            "size": [{
                "val": 32,
                "price": "1000"
            },
                {
                    "val": 24,
                    "price": "1244"
                }
            ]
        }, {
            "type": "denim",
            "colour": [{
                "name": "red",
                "image": "red.jpg"
            },
                {
                    "name": "white",
                    "image": "white.jpg"
                }
            ],
            "size": [{
                "val": 32,
                "price": 1000
            },
                {
                    "val": 24,
                    "price": 1244
                }
            ]
        }

        ]
    },{
        type: "superslim",
        model: [{
            "type": "denim",
            "colour": [{
                "name": "red",
                "image": "red.jpg"
            },{
                "name": "white",
                "image": "white.jpg"
            }
            ],
            "size": [{
                "val": 32,
                "price": 1000
            },{
                "val": 24,
                "price": 1244
            }
            ]
        },{
            "type": "dobby",
            "colour": [{
                "name": "red",
                "image": "red.jpg"
            },
                {
                    "name": "white",
                    "image": "white.jpg"
                }
            ],
            "size": [{
                "val": 32,
                "price": 1000
            },
                {
                    "val": 24,
                    "price": 1244
                }
            ]
        }

        ]
    }
    ]
    var Description = 'Mens Formal Wear';
    var date = new Date();
    var ProductData = new ProductSchema({
        name:Name,
        category:Category,
        subcategory:SubCategory,
        description:Description,
        created_at:date
    })
    ProductData.save(function (err,Status) {
        if(!err){
            res.send("Product Stored Successfully");
        }else {
            res.send("Oops! Something went Wrong");
        }
    })
});

2.) Armazenamento Dinâmico / Do Controlador
//Dynamically Storing or from Controller
var ProductSchema = require('path/to/ProductSchema.js');
app.post('/Store_Product_Details',function (req,res) {
    var Name = req.body.Name;
    var Category = req.body.Category;
    var SubCategory = req.body.SubCategory;
    var Description = req.body.Description;
    var date = new Date();
    var ProductData = new ProductSchema({
        name:Name,
        category:Category,
        subcategory:SubCategory,
        description:Description,
        created_at:date
    })
    ProductData.save(function (err,Status) {
        if(!err){
            res.send("Product Stored Successfully");
        }else {
            res.send("Oops! Something went Wrong");
        }
    })
});