Web
Analytics
Writing a CRUD app with Node.js and MongoDB | Angular | ASP.NET Tutorials

For Consultation : +91 9887575540

Stay Connected :

npm init
npm install express --save
npm install mongodb --save
npm install mongoose --save
npm install cors --save
npm install nodemone --save
npm install body-parser --save
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ProductSchema = new Schema({
    title: String,
    price: Number,
    instock: Boolean,
    photo: String,
});
module.exports = mongoose.model('Product', ProductSchema);
var express = require('express');
var bodyParser = require('body-parser');
var cors = require('cors');
var app = express();
var mongoose = require('mongoose');
var product = require('./product');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8090;
var router = express.Router();
app.use(cors());
app.use('/api', router);
app.listen(port);
console.log('REST API is runnning at ' + port);
mongoose.connect('mongodb://localhost:27017/ganesha', { useNewUrlParser: true });
router.use(function (req, res, next) {
    // do logging 
    // do authentication 
    console.log('Logging of request will be done here');
    next(); // make sure we go to the next routes and don't stop here
});
router.route('/products').post(function (req, res) {
    var p = new product();
    p.title = req.body.title;
    p.price = req.body.price;
    p.instock = req.body.instock;
    p.photo = req.body.photo;
    p.save(function (err) {
        if (err) {
            res.send(err);
        }
        res.send({ message: 'Product Created !' })
    })
   
});
router.route('/products').get(function (req, res) {
    product.find(function (err, products) {
        if (err) {
            res.send(err);
        }
        res.send(products);
    });
});
router.route('/products/:product_id').get(function (req, res) {

    product.findById(req.params.product_id, function (err, prod) {
        if (err)
            res.send(err);
        res.json(prod);
    });
});
router.route('/products/:product_id').put(function (req, res) {

    product.findById(req.params.product_id, function (err, prod) {
        if (err) {
            res.send(err);
        }
        prod.title = req.body.title;
        prod.price = req.body.price;
        prod.instock = req.body.instock;
        prod.photo = req.body.photo;
        prod.save(function (err) {
            if (err)
                res.send(err);

            res.json({ message: 'Product updated!' });
        });

    });
});
router.route('/products/:product_id').delete(function (req, res) {

    product.remove({ _id: req.params.product_id }, function (err, prod) {
        if (err) {
            res.send(err);
        }
        res.json({ message: 'Successfully deleted' });
       
    })
  

});
<html>
    <head><title>s</title>
        <script
        src="https://code.jquery.com/jquery-3.3.1.js"
        integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
        crossorigin="anonymous"></script>
        <script>
            $(document).ready(function () {
                //Ajax Start
                $(document).ajaxStart(function () {
                    $("#div1").css("display", "block");
                });
                $(document).ajaxStop(function () {
                    $("#div1").css("display", "none");
                })
                $(document).ajaxComplete(function () {
                    $("#div1").css("display", "none");
                });
     
     
                //Ajax Complete
     
                $("#btn").click(function () {
                    $("table tr").remove();
                    $("table").append("<tr><th>id</th><th>title</th><th>price</th><th>instock</th></tr>");
                
                    
                    $.getJSON("http://localhost:8090/api/products/", function (data) {
                        $.each(data, function (i, value) {
                            $("table").append("<tr id=rows><td>" + value._id + "</td><td>" + value.title + "</td><td>" + value.price + "</td><td>" + value.instock + "</td></tr>");
     
                        })
                    })
     
     
                })
                $("#btn1").click(function () {
                    var myKeyVals = { title: document.getElementById("title").value , price:document.getElementById("price").value , instock :document.getElementById("instock").value }



$.ajax({
    url: 'http://localhost:8090/api/products/',
    dataType: 'json',
    type: 'post',
    contentType: 'application/json',
    data: JSON.stringify( myKeyVals ),
    processData: false,
    success: function( data, textStatus, jQxhr ){
        $('#response pre').html( JSON.stringify( data ) );
    },
    error: function( jqXhr, textStatus, errorThrown ){
        console.log( errorThrown );
    }
});



                   
     
     
                })
                $("#btn2").click(function () {
                    var myKeyVals = {_id: document.getElementById("id1").value , title: document.getElementById("title").value , price:document.getElementById("price").value , instock :document.getElementById("instock").value }



$.ajax({
    url: 'http://localhost:8090/api/products/'+ document.getElementById("id1").value ,
    dataType: 'json',
    type: 'put',
    contentType: 'application/json',
    data: JSON.stringify( myKeyVals ),
    processData: false,
    success: function( data, textStatus, jQxhr ){
        $('#response pre').html( JSON.stringify( data ) );
    },
    error: function( jqXhr, textStatus, errorThrown ){
        console.log( errorThrown );
    }
});



                   
     
     
                })
                $("#btn3").click(function () {
                    var myKeyVals = {_id: document.getElementById("id1").value }



$.ajax({
    url: 'http://localhost:8090/api/products/'+ document.getElementById("id1").value ,
    dataType: 'json',
    type: 'delete',
    contentType: 'application/json',
    data: JSON.stringify( myKeyVals ),
    processData: false,
    success: function( data, textStatus, jQxhr ){
        $('#response pre').html( JSON.stringify( data ) );
    },
    error: function( jqXhr, textStatus, errorThrown ){
        console.log( errorThrown );
    }
});



                   
     
     
                })
            })
     
        </script>
    
    
    </head>
   
    <body>
        <div>
            <input type="button" name="name" id="btn" value="Get Employee" /> 
            
            <hr />
            <table border="1" width="300px">
                
     
     
            </table>
            <div id="div1" style="display:none">
     
                <img src="../images/ajax_linq_MVC.png" /></div>
        </div>
        <hr>
        <div id="div2">
            Id <input type="text" name="id1" id="id1" /><br/>
           Title <input type="text" name="title" id="title" /><br/>
           Price <input type="text" name="price" id="price" /><br/>
          InStock  <input type="text" name="instock" id="instock" /><br/>

             <input type="button" name="name2" id="btn1" value="Insert Employee" /> 
             <input type="button" name="name3" id="btn2" value="Update Employee" /> 
             <input type="button" name="name4" id="btn3" value="Delete Employee" /> 
                    </div>
                    <div id="response">
                        <pre></pre>
                    </div>

    </body>
</html>