Skip to main content

Model

Create a model

  • define a JavaScript class that represents a specific data structure or entity, such as a user, product
const mongoose = require('mongoose');

//create schema with validations
const ProductSchema = new mongoose.Schema({
name: {type:String,required:true},
slug: String,
});

//create model
const Product = mongoose.model('Product', ProductSchema);

//export module
module.exports = Product;

Use a model

  • we can now use the model inside a route
const express = require('express');
const router = express.Router();
const Product = require('../models/Product');

//CREATE
router.post('/', async (req,res)=>{
const result = await Product.create(req.body);
res.status(201).json({success:true,data:result});
})

//GET
router.get('/', async (req,res)=>{
const result = await Product.find();
res.status(200).json({success:true,data:result});
})

//GET 1
router.get('/:id', async (req,res)=>{
const result = await Product.findById(req.params.id);
res.status(200).json({success:true,data:result});
})

//UPDATE
router.put('/:id', async (req,res)=>{
try{
const result = await Product.findByIdAndUpdate(req.params.id,req.body,{new:true}); //new set to true so that result with updated values
res.status(200).json({success:true,data:result});
}catch(error){
res.status(400).json({success:false,message:error.errorResponse.errmsg});
}
})

//DELETE
router.post('/', async (req,res)=>{
const result = await Product.removeOne(req.params.id);
res.status(200).json({success:true});
})