Mongoose is the best solution to insert data into MongoDB.Because It is very easy & fast. So, In this tutorial, you will get the best script with an example to insert form data in Node.js Express. Even you will learn it with MVC pattern using express. Therefore, It is simple to understand & implement in your project.
It is explained with the simple HTML form that has four input fields like Full Name, Email Address, City & address. This example will help you to implement another form of information.
From the next step, you will learn How to insert data into MongoDB using Mongoose. So, read the complete steps and share with your friends too those who are interested to learn it.
Insert Data into MongoDB Using Mongoose & Express
Before getting started, you must configure the following basic steps
- Install Node.js on your device
- Install MongoDB Community Server
- Also, Install MongoDB Compass and create a Database with the name
nodeapp
& Collection with the nameusers
1. Install Express Application
First, Install Express Application and Create the following necessary folders & files
myapp/ |__controllers/ | |__user-controller.js |__models/ | |__user-model.js |__routes/ | |__user-route.js |__views/ | |__user-form.ejs |__database.js
2. Connect Node.js App to MongoDB Database
You must connect Node.js App to MongoDB Database with the help of the following script.
File Name – database.js
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/nodeapp', {useNewUrlParser: true}); var conn = mongoose.connection; conn.on('connected', function() { console.log('database is connected successfully'); }); conn.on('disconnected',function(){ console.log('database is disconnected successfully'); }) conn.on('error', console.error.bind(console, 'connection error:')); module.exports = conn;
3. Create a Model to Insert Data
Now, Create a model to insert data and configure the following points to write it’s the script –
- Include mongoose module using
require('mongoose')
- Include MongoDB database using
require('../database')
- Create a schema
userSchema
with the collection columns’ name like first_name, email_address, city & country. - Pass the collection name
users
& schemauserSchema
to the mongoose module and assign it to a variableuserTable
- After that, Write a mongoose query withing
module.exports
to save data into the MongoDB Datable
Note – Name of Form Input Fields & collection column should be the same.
File Name – insert-model.js
var mongoose=require('mongoose'); var db = require('../database'); // create an schema var userSchema = new mongoose.Schema({ full_name: String, email_address:String, city:String, country:String }); userTable=mongoose.model('users',userSchema); module.exports={ createData:function(inputData, callback){ userData= new userTable(inputData); userData.save(function(err, data){ if (err) throw err; return callback(data); }); } }
4. Create an HTML Form to Insert Data
Create an HTML form with five input fields like Full Name, Email Address, City, Country & Submit. Also, the form must have the following two attributes –
method="POST"
action="/create"
.
File Name – user-form.ejs
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <!--====form section start====--> <div class="user-detail"> <hr> <form action="/create" method="POST"> <label>Full Name</label> <input type="text" placeholder="Enter Full Name" name="full_name" required > <label>Email Address</label> <input type="email" placeholder="Enter Email Address" name="email_address" required> <label>City</label> <input type="city" placeholder="Enter Full City" name="city" required> <label>Country</label> <input type="text" placeholder="Enter Full Country" name="country" required> <button type="submit">Submit</button> </form> </div> </div> <!--====form section start====--> </body> </html>
5. Create a Controller to Insert Data
Now, Create a controller to insert data with the help of the following points –
- Include user module using
require('../models/insert-model')
- Create a method
userForm
to display the form in the browser - Also, create another method
createData
to save data on the form submit
File Name – insert-controller.js
var insertModel= require('../models/insert-model'); module.exports={ userForm:function(req,res){ res.render('user-form') }, createData:function(req, res){ var inputData= req.body; insertModel.createData(inputData, function(data){ res.render('user-form') console.log(" record was created"); }); } }
6. Create a Router to Insert Data
Create a Router with the following two routes –
- Create a route
/user-form
with theGET
method to display the user form in the browser. - Also, create another route
/create
with thePOST
method to insert data - At last, export the router
File Name – insert-route.js
var express = require('express'); var router = express.Router(); var insertController= require('../controllers/insert-controller'); router.get('/user-form', insertController.userForm); router.post('/create', insertController.createData); module.exports = router;
7. Include Router in the app.js
You must include the following router code in the app.js.
File Name – app.js
var insertRouter = require('./routes/insert-route'); app.use('/', insertRouter);
In this file, You will get more lines of default code that play the most important role to run the node.js. So, you must not remove any line of them.
8. Run Node.js App to Insert Data
First of All, start the node.js server and enter the following URL in your browser.
http://localhost:3000/user-form
My Suggestion
Dear developers, I hope you have understood the above script, Now you are able to insert data into MongoDB using Mongoose and Node.js express
I will share more tutorials on Node.js/Express asap. So, Continue to visit this website.
If you have any doubts or questions. You can directly ask me through the below comment box.