0

I have a project Online shop. Could you help me.when user clicks on butt.on jquery has to send ajax request and send id of product to /cart route. Post request should check for cookies and if user has cookies add data to 'orders' collection. But post request on serverjs doesn't work Here is code: server.js:

var express = require('express');
var app = express();
var ejs = require('ejs');
var _= require('underscore');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongo = require('mongodb');
var MongoClient = mongo.MongoClient;
app.use(cookieParser());
app.set('view engine', 'ejs');
app.use(express.static('public'));
app.use(bodyParser.urlencoded({extended: false}));
/*-----------------------------------------------------------------------------*/
MongoClient.connect('mongodb://localhost:27017/shop', function(err,db){
    app.get('/', function(req,res){
        db.collection('products').find().toArray(function(err, products){
            if(err){
                console.log('err');
                return;
            }
            res.render('mainpage',{
                products:products
            });
        });
    })
    app.get('/products/:id', function(req,res){
        db.collection('products').find({_id: new mongo.ObjectId(req.params.id)}).toArray(function(err, product){
            if(err){
                console.log('err');
                return;
            }
            res.render('products',{
                product:product[0]
            });
        });
    })
    app.post('/cart', function(req, res){
        var cooks = req.cookies.user;
        if(!cooks){
            var time = new Date().getTime();
            return res.cookie('user', time);
        }
        var data = req.body.data;
        db.collection('orders').insertOne({"user": req.cookies, "products":[data]} ,function(err){
            if(err){
                console.log('err', err);
            }
            else{
                console.log('success');
            }
            res.end();
        });
    });

app.get('/cart', function(req, res){
    db.collection('orders').find().toArray(function(err, products){
        if(err){
            console.log('err');
            return;
        }
        res.render('order',{
            products:products
        });
    });
})
});

app.listen(3000);

Jquery:

$(function(){
    $('.btn-default').on('click',function(e){
        e.preventDefault();
        var data = $(this).data('id');
        $.ajax({
            url:'/cart',
            method:'post',
            data:{
                'data':data
            },
            success:function(){
                console.log('Added!');
            },
            error:function(){
            }
        })
    })
})

and here is little piece of html:

 <p><a class="btn btn-default btn-warning" href="#" role="button" data-id="<%=product._id%>">Add to cart&raquo;</a></p>
Neil Lunn
  • 148,042
  • 36
  • 346
  • 317
Ulukbek Abylbekov
  • 449
  • 1
  • 6
  • 19

0 Answers0