Simple Nodejs MC Pattern
syed kamruzzaman
Posted on April 18, 2022
There are a lot of MC Pattern you can find on google.
Today, I am talking about my favorite MC Pattern. I am also PHP developer. PHP one of the most popular Frameworks is Laravel. I am fond of Larevel MVC Pattern.
When I am building any project, trying to follow Laravel MVC Pattern.
let's do my Favourite MC pattern.
Prerequisites
Before we move on, you’ll need to have the following:
- Node.js installed on your machine.
- setup mongoDB on you computer.
Step-1
Create a Database on your MongoDB and also collection name.
Step-2
open your cmd terminal and type npm init -y
and install following package.
- express
- mongoose
- body-parser
- mongoose
- nodemon
"dependencies": {
"body-parser": "^1.20.0",
"express": "^4.17.3",
"mongoose": "^6.3.0"
},
"devDependencies": {
"nodemon": "^2.0.15"
}
go to https://www.npmjs.com/ site and find out this package.
Step-3
following file structure do I have
Step-4
Create a new file index.js into routes folder [src/routes/index.js] and write this code.
const express = require('express');
const route = (app)=>{
//unknowen route
app.use('*', (req, res)=> res.status(404).json({status:"fail", data:"Route does not exist"}));
}
module.exports = route;
Step-4
Now go to app.js file and write this code
const express = require('express');
const route = require('./src/routes/index');
const dbConnection = require('./src/utils/dbConnection');
const bodyParse = require('body-parser');
const app = new express();
//use app
app.use(bodyParse.json());
app.use(bodyParse.urlencoded({ extended: true }));
//mongoose DB connnection
dbConnection();
//Route connect
route(app);
module.exports = app;
Step-5
We are just ending basic setup. First go to dbConnection.js file [src/utils/dbConnection.js] and write-
const mongoose = require('mongoose');
const dbConnection = async () => {
const URI = await "mongodb://localhost:27017/mongoose_query_pattern";
mongoose.connect(URI,
err => {
if(err) throw err;
console.log('connected to MongoDB')
});
}
module.exports = dbConnection;
then go to index.js [root index] file and write this code
const app = require('./app');
app.listen(5000,function () {
console.log("This Server is running from 5000 port")
});
Ok, now finished our basic setup. Open your Terminal and type nodemon index.js. if all is ok then showing as the image.
Now our database connection is ok and run our app successfully. Lets do MC Pattern
Step-6
Create userRouterApi.js file on routes folder. [src/routes/userRouterApi.js] and write this
const express = require('express');
const UserController = require('../controllers/UserController');
const router = express.Router();
router.get('/test-user-api', UserController.testUser)
module.exports = router;
Step-7
Create another file, name is UserController.js on controllers folder [src/controllers/UserController.js] and write this
module.exports = class UserController{
static testUser = async(req, res)=>{
try{
return res.status(200).json({
code: 200,
message: "Test User api call",
data: "Test User api call",
});
}catch(error){
res.status(501).json({
code: 501,
message: error.message,
error: true,
});
}
}
}
Step-8
Now go to index.js file which is located on routes folder [src/roues/index.js] and write this
const express = require('express');
const userRouterApi = require('./userRouterApi');
const route = (app)=>{
//All user router
app.use('/api/v1', userRouterApi);
//unknowen route
app.use('*', (req, res)=> res.status(404).json({status:"fail", data:"Route does not exist"}));
}
module.exports = route;
Now, you have done user controller first route. which is
if you open your postman and run this URL. you can see below this output
this project you can see also another folder. Like as middlewares, models, repositories and utils.
middlewares folder- you can write any middleware related code.
models folder- you can write all models in this folder.
repositories folder - if you know about repository pattern, then your code will be well structure. Another day I will talking about repository pattern
utils folder - all Extra function, like as jwt, authentication, databaseConncetion etc. you can add this folder.
That's all. Happy Learning :) .
[if it is helpful, giving a star to the repository 😇]
https://github.com/kamruzzamanripon/simple-node-mc-pattern
Posted on April 18, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.