Creating a CRUD Rest Api example Express MongoDb:
Step1: Creating application folder and application structure.:
Step 2: Install required dependencies by using npm install < dependencies> --save command.
Step 3: create app folder structure compatible with MVC structure as shown below.
Package.json file should be like this:
"scripts": {
"start": "nodemon app.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"mongoose": "^6.0.11",
"nodemon": "^2.0.13"
}
}
In app.js file write the code for the server:
const express = require('express');
const app = express();
const mongoose = require('mongoose');
app.use(express.json());
//
import routes
const postRoute= require('./routes/posts');
app.use('/posts',postRoute);
//Routes
// listening
mongoose.connect("mongodb://localhost:27017/myowndb",() =>{
console.log("Connected to DB");
});
app.listen(3000);
In models/post.js file code:
const mongoose = require('mongoose');
const PostSchema= mongoose.Schema({
title:{
type:String,
required:true,
},
description:{
type:String,
required:true
},
date:{
type:Date,
default:Date.now
}
});
module.exports=mongoose.model('Posts',PostSchema);
In routes/ posts.js file code:
const express= require('express');
const router= express.Router();
const Post= require('../models/post');
// getting all posts
router.get('/', async(req,res) =>{
try{
const posts = await Post.find();
res.json(posts);
}catch (err){
res.json({message:err});
}
});
// getting a post by id
router.get('/:postid', async(req,res) =>{
try{
const post = await Post.findById(req.params.postid);
res.json(post);
}catch(err){
res.json({message:err});
}
})
// creating a post
router.post('/',(req,res)=>{
const post =new Post({
title:req.body.title,
description:req.body.description
});
post.save().
then(data =>{
res.json(data);
}).catch (err=>{
res.json({message:err});
})
});
// deleting a post
router.delete('/:postid', async(req,res) =>{
try{
const removepost = await Post.deleteOne({_id: req.params.postid});
res.json(removepost);
}catch(err){
res.json({message:err});
}
}
);
// updating a post by id
router.patch('/:postid', async(req,res) =>{
try{
const editpost = await Post.updateOne({_id: req.params.postid});
res.json(editpost);
}catch(err){
res.json({message:err});
}
});
module.exports= router;
Thank you very much Charlie for your comments. I will always try to post some presentation on topics.
ReplyDelete