tutorial servidor relacionar proyecto produccion nodejs node example español crear colecciones node.js mongodb mongoose

node.js - servidor - nodejs en produccion



¿Cómo puedo diseñar Schema para el siguiente producto usando mangosta? (3)

name: aaaa shirts category: shirts 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" } ] } ] } ]

Arriba está mi ejemplo de diseño de producto. Quiero crear un esquema para esto. ¿Cómo puedo crear un Esquema para el producto anterior?

¿Cómo puedo modificar mi diseño de esquema?

''use strict''; import mongoose from ''mongoose''; var Schema = mongoose.Schema, ObjectId = Schema.ObjectId; var ProductSchema = new mongoose.Schema({ name : String, category : String, subcategory : ?? description : String, created_at : { type: Date }, updated_at : { type: Date, default: Date.now }, updated: {type: Date, default: Date.now} }, { versionKey: false }); export default mongoose.model(''Product'', ProductSchema);

Por ejemplo, selecciono slimline, necesito enviar modelos (twill, denim, dobby) con imágenes y tamaños (28,30,32,36) con colores basados ​​en la selección del color (rojo, blanco), también tengo que cambiar la imagen de la camisa en función en el color seleccionado, ¿alguien da alguna sugerencia? ayúdame a seguir adelante


La respuesta de @Ratan Uday Kumar es correcta, pero otra pero similar es:

var ProductSchema = new mongoose.Schema({ category :{type:String}, name :{type:String}, description :{type:String}, type :[{type:String}], fabric :[{type:String}], size :[{type:Number}], color :[{type: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);

{strict: false} es para el futuro ¿Cómo? Ahora su esquema tiene 10 campos, si en el futuro desea agregar un objeto con 12 (algo más de 10), puede hacerlo, porque no hay rigor en la inserción de objetos con estos 10 campos. Incluso si menos campos.


// Definición de esquema Ejemplo

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


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

Almacenamiento de detalles del producto en la recopilación de la base de datos 1. Almacenamiento 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.) almacenamiento dinámico / desde el 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"); } }) });