mongodb方法+使用两个库 增删改查案例

文件目录

在这里插入图片描述

数据库 db.js

var mongodb = require('mongodb'); // 引入mongodb

var MongoClient = mongodb.MongoClient;

var dbUrl = "mongodb://localhost:27017"; // 数据库的地址及端口

var dbName = "myFiult";  // 库名

// 连接数据库
function connectMGDB(cb, res) {
    MongoClient.connect(dbUrl, {useNewUrlParser: true}, function(err, db) {
        // console.log('db==========', db);
        if(err) {
            console.log("数据库连接失败:", err);
            res.send({error: 1}); // 数据库连接失败
        } else {
            console.log("数据库连接成功");
            // 关联数据库
            var dbase = db.db(dbName);
            // 进行增删改查操作
            cb(dbase, db);
        }
    })
}
// 插入方法
module.exports.insert = function(res, cName, obj, cb) {
    connectMGDB(function(dbase, db) {
        dbase.collection(cName).insert(obj, function(err, result) {
            cb(err, result, db);
        })
    }, res)
}

// 查询方法
module.exports.find = function(res, cName, whereObj, cb) {
    connectMGDB(function(dbase, db) {
        whereObj.find ? whereObj.find : whereObj.find = {}; // whereObj对象中有find属性 则执行whereObj.find 
        whereObj.sort ? whereObj.sort : whereObj.sort = {};
        whereObj.limit ? whereObj.limit : whereObj.limit = 0;
        whereObj.skip ? whereObj.skip : whereObj.skip = 0;
        // 查询 age>16 的数据  跳过3条数据  显示3条数据     
        dbase.collection(cName).find().count().then(function(count) { // 查询当前数据总量
            dbase.collection(cName).find(whereObj.find).limit(whereObj.limit)
            .skip(whereObj.skip).collation({"locale": "zh", numericOrdering:true}).sort(whereObj.sort).toArray(function(err, result) { // 根据查询条件返回对应数据
                cb(err, result, db, count);
            })
        })
    }, res);
}

// 删除方法
module.exports.delete = function(res, cName, obj, cb) {
    connectMGDB(function(dbase, db) {
        dbase.collection(cName).deleteMany(obj, function(err, result) {
            cb(err, result, db)
        })
    }, res);
}

// 修改方法
module.exports.update = function(res, cName, whereObj, updatePbj, cb) {
    connectMGDB(function(dbase, db) {
        dbase.collection(cName).updateOne(whereObj, updatePbj, function(err, result) {
            cb(err, result, db)
        })
    }, res);
}

首页

index.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" type="text/css" href="css/new_file.css"/>
		<script src="js/jquery-3.2.1.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<h1>华联超市</h1>
		<a href="http://127.0.0.1:3000/hd/hd.html" style="margin-left: 20px;">录入商品</a>&emsp;
		<a href="http://127.0.0.1:3000/qd/qd.html">前台展示</a>
	</body>
	<script src="js/new_file.js" type="text/javascript" charset="utf-8"></script>
</html>

new_file.css

*{
	margin: 0;
	padding: 0;
}
h1{
	margin-left: 20px;
	line-height: 60px;
}
a{
	color: blue;
}

录入商品页

hd.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" type="text/css" href="hd.css"/>
		<script src="../js/jquery-3.2.1.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<h1>商品录入</h1>
		<p>
			图片地址:<input type="text" class="img"/>&ensp;
			商品名称:<input type="text" class="name"/>
		</p>
		<p>
			商品价格:<input type="text" class="many"/>&ensp;
			商品种类:	<select class="class">
                <option value="冰箱" selected="selected">冰箱</option>
                <option value="电脑">电脑</option>
                <option value="手机">手机</option>
            </select>
		</p>
		<p>
			<button type="button" class="add">添加</button>
		</p>
		<p>
			名称:<input type="text" class="names"/>&ensp;
			价格:<input type="text" class="manys"/>&ensp;
			<button type="button" class="ss">搜索</button>
		</p>
		<p class="ts yc" style="color: red;">名称/价格不能都为空</p>
		<p class="button">
			<button type="button" selected class="alls color">全部</button>&ensp;
			<button type="button" class="bx">冰箱</button>&ensp;
			<button type="button" class="dn">电脑</button>&ensp;
			<button type="button" class="sj">手机</button>
			<input type="text" class="save yc"/>
		</p>
		<table border="1" cellspacing="0" cellpadding="0">
			<thead>
				<tr>
					<th>图片</th>
					<th>名称</th>
					<th>价格</th>
					<th>种类</th>
					<th>操作</th>
				</tr>
			</thead>
			<tbody>
				<!--<tr>
					<td>
						<img src="../imgs/${arr[i].img}.jpg"/>
					</td>
					<td>${arr[i].name}</td>
					<td>${arr[i].many}</td>
					<td>${arr[i].classs}</td>
					<td>
						<a href="javascript:void(0)" onclick=del('${arr[i]._id}')>删除</a>&ensp;
						<a href="javascript:void(0)" class="xg">修改</a>
					</td>
				</tr>-->
			</tbody>
			
		</table>
	</body>
	<script src="hd.js" type="text/javascript" charset="utf-8"></script>
</html>

hd.css

*{
	margin: 0;
	padding: 0;
	text-decoration: none;
	outline: none;
}
body{
	padding-left: 20px;
}
h1{
	line-height: 60px;
}
p{
	margin-bottom: 5px;
}
button{
	padding: 1px 10px;
}
table{
	width: 600px;
	line-height: 24px;
	text-align: center;
}
img{
	margin-top:5px ;
	width: 80px;
	height: 80px;
}
a{
	color: #000000;
}
.yc{
	display: none;
}
.color{
	color: red;
}

hd.js

//首屏渲染
show()
//添加
$('.add').click(function(){
	if ($('.img').val()==''||$('.name').val()==''||$('.many').val()=='') {
		alert('不能为空')
	} else{
		var obj = {
			img:$('.img').val(),
			name:$('.name').val(),
			many:$('.many').val(),
			classs:$('.class').val()
		}
		$.ajax({
			type:"post",
			url:"/addPost",
			async:true,
			data:obj,
			success:function(res){
			   show()
			}
		});
	}
	$('.img').val('')
	$('.name').val('')
	$('.many').val('')
	var str = `
		<option value="冰箱" selected="selected">冰箱</option>
        <option value="电脑">电脑</option>
        <option value="手机">手机</option>`
	$('select').html(str)
})
//渲染1
function show(){
	$.ajax({
		type:"get",
		url:"/getContent",
		success:function(res){
			if (res.length==0) {
				$('table').hide()
				$('.button').hide()
			} else{
				showDom(res)
				$('table').show()
				$('.button').show()
			}
		}
	});
}
//渲染2
function showDom(arr){
	var str = ''
	for (var i = 0; i < arr.length; i++) {
		str += `
			<tr>
				<td>
					<img src="../imgs/${arr[i].img}.jpg"/>
				</td>
				<td>${arr[i].name}</td>
				<td>${arr[i].many}</td>
				<td>${arr[i].classs}</td>
				<td>
					<a href="javascript:void(0)" onclick=del('${arr[i]._id}')>删除</a>&ensp;
					<a href="javascript:void(0)" onclick=xg(${JSON.stringify(arr[i])},this)>修改</a>
				</td>
			</tr>
	`}
	$('tbody').html(str)
}
//删除
function del(myid){
	var obj = {
		id:myid
	}
	$.ajax({
		type:"post",
		url:"/delePost",
		async:true,
		data:obj,
		success:function(res){
		   $('.button>button').eq(0).addClass('color').siblings().removeClass('color')
		   show()
		}
	});
}
//修改
function xg(obj,a){
	if ($(a).html() == '修改') {
		$('.img').val(obj.img)
		$('.name').val(obj.name)
		$('.many').val(obj.many)
		$('.class').val(obj.classs)
		$('.save').val(obj._id)
		$(a).html('完成修改')
	} else{
		$(a).html('修改')
		var obj = {
			img:$('.img').val(),
			name:$('.name').val(),
			many:$('.many').val(),
			classs:$('.class').val(),
			id:$('.save').val()
		}
		$.ajax({
			type:"post",
			url:"/updatePost",
			async:true,
			data:obj,
			success:function(res){
			    show()
			    $('.img').val('')
			    $('.name').val('')
			    $('.many').val('')
				var str = `
					<option value="冰箱" selected="selected">冰箱</option>
			        <option value="电脑">电脑</option>
			        <option value="手机">手机</option>`
				$('select').html(str)
			}
		});
	}
	
}
//搜索
$('.ss').click(function(){
	var obj
	if ($('.names').val()==''&&$('.manys').val()=='') {
		$('.ts').slideDown().delay(1000).slideUp()
	} else if($('.names').val()==''&&$('.manys').val()!=''){
		obj = {
			many:$('.manys').val()
		}
	} else if($('.names').val()!=''&&$('.manys').val()==''){
		obj = {
			name:$('.names').val()
		}
	} else if($('.names').val()!=''&&$('.manys').val()!=''){
		obj = {
			many:$('.manys').val(),
			name:$('.names').val()
		}
	}
	$.ajax({
		type:"post",
		url:"/tabData",
		async:true,
		data:obj,
		success:function(res){
		    if (res.length==0) {
				$('table').hide()
				$('.button').hide()
			} else{
				showDom(res)
				$('table').show()
				$('.button').show()
			}
		}
	});
	$('.manys').val('')
	$('.names').val('')
})
//分类
$('.button>button').click(function(){
	var index = $(this).index()
	$(this).addClass('color').siblings().removeClass('color')
	if ($(this).html()=='全部') {
		show()
	} else{
		var obj = {
			classs:$(this).html()
		}
		$.ajax({
			type:"post",
			url:"/tabData",
			data:obj,
			success:function(res){
			    if (res.length==0) {
					$('table').hide()
				} else{
					showDom(res)
					$('table').show()
				}
			}
		});
	}
})

前台展示页

qd.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" type="text/css" href="qd.css"/>
		<script src="../js/jquery-3.2.1.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<h1>华联超市商品购买中心</h1>
		<p>
			<button type="button" class="color">首页</button>
			<button type="button">购物车</button>
		</p>
		<div class="box">
			<div>
				<ul type="none" class="ul1">
					<!-- <li>
						<img src="../imgs/${arr[i].img}.jpg" alt="">
						<span>${arr[i].name}&emsp;${arr[i].many}</span>
						<button bid="${arr[i]._id}" type="button" onclick="add()">加入购物车</button>
					</li> -->
			   </ul>
			   <h1>加入成功</h1>
			</div>
			<ul type="none" class="ul2 yc">
				<!-- <li>
					<img src="../imgs/${arr[i].img}.jpg" alt="">
					<span>${arr[i].name}&emsp;${arr[i].many}</span>
					<button bid="${arr[i]._id}" type="button" onclick="jian()">-</button>
					<input type="text" value="{arr[i].sl">
					<button bid="${arr[i]._id}" type="button" onclick="jia()">+</button>
				</li> -->
			</ul>
		</div>
	</body>
	<script src="qd.js" type="text/javascript" charset="utf-8"></script>
</html>

qd.css

*{
	margin: 0;
	padding: 0;
	text-decoration: none;
	outline: none;
}
body{
	padding-left: 20px;
}
h1{
	line-height: 60px;
}
body>p{
	margin-bottom: 10px;
}
.color{
	color: red;
}
.yc{
	display: none;
}
.box>div>h1{
	color: red;
	display: none;
}
ul>li{
	margin-bottom: 10px;
	border: 1px solid red;
	width: 500px;
	height: 100px;

}
ul>li>img{
   width: 90px;
   height: 90px;
   margin: 5px;
   vertical-align: middle;
}
ul>li>span{
	border: 0px;
}
.ul2>li>button{
	width: 16px;
}

qd.js

//首屏渲染
show()
show1()
//tog切换
$('body>p>button').click(function(){
    $(this).addClass('color').siblings().removeClass('color')
    var index = $(this).index()
    $('.box').children().eq(index).show().siblings().hide()
})
//首页获取数据
function show(){
    $.ajax({
        type:'get',
        url:'/getContent',
        success:function(res){
            showDom(res)
        }
    })
}
//首页渲染数据
function showDom(arr){
    var str = ''
    for (let i = 0; i < arr.length; i++) {
        str+=
            `<li>
                <img src="../imgs/${arr[i].img}.jpg" alt="">
                <span>${arr[i].name}&emsp;${arr[i].many}</span>
                <button bname="${arr[i].name}" bid="${arr[i]._id}" type="button" onclick="add(this)">加入购物车</button>
            </li>`
    }
    $('.ul1').html(str)
}
//首页点击加入购物车
var sl=1
function add(a){
    var name = $(a).attr('bname')
   
    var id = $(a).attr('bid')
    //查找
    $.ajax({
        type:'post',
        url:'/tab',
        data:{
            name:name
        },
        success:function(res){
            if (res.length == 0) {
                $.ajax({
                    type:'post',
                    url:'/tabData',
                    data:{
                        _id:id
                    },
                    success:function(res){
                        var obj = {
                            name:res[0].name,
                            many:res[0].many,
                            sl:sl,
                            img:res[0].img
                        }
                        $.ajax({
                            type:'post',
                            url:'/add',
                            data:obj,
                            success:function(res){
                                show1()
                            }
                        })
                    }
                })
            } else {
                $.ajax({
                    type:'post',
                    url:'/tab',
                    data:{
                        name:name
                    },
                    success:function(res){
                        sl = res[0].sl - 0 + 1
                        var id = res[0]._id
                        $.ajax({
                            type:'post',
                            url:'/update',
                            data:{
                                id:id,
                                sl:sl
                            },
                            success:function(res){
                                show1()
                            }
                        });                    
                    }
                })
            }
        }
    });
    $('.box>div>h1').slideDown(500).delay(1000).slideUp(500)
}
//购物车获取数据
function show1(){
    $.ajax({
        type:'get',
        url:'/content',
        success:function(res){
           showDom1(res)
        }
    });
}
//购物车渲染
function showDom1(arr){
    var str = ''
    for (let i = 0; i < arr.length; i++) {
        str +=
            `<li>
                <img src="../imgs/${arr[i].img}.jpg" alt="">
                <span>${arr[i].name}&emsp;${arr[i].many}</span>
                <button bid="${arr[i]._id}" type="button" onclick="jian(this)">-</button>
                <span>${arr[i].sl}</span>
                <button bid="${arr[i]._id}" type="button" onclick="jia(this)">+</button>
            </li>`
    }
    $('.ul2').html(str)
}
//购物车+功能
function jia(a){
    var id = $(a).attr('bid')
    var sl = $(a).siblings('span').eq(1).html()-0+1
    $.ajax({
        type:'post',
        url:'/update',
        data:{
            id:id,
            sl:sl
        },
        success:function(res){
            show1()
        }
    });
}
//购物车-功能
function jian(a){
    var id = $(a).attr('bid')
    var sl = $(a).siblings('span').eq(1).html()-0-1
    if (sl==0) {
        $.ajax({
            type:'post',
            url:'/dele',
            data:{
                id:id
            },
            success:function(res){
                show1()
            }
        });
    } else {
        $.ajax({
            type:'post',
            url:'/update',
            data:{
                id:id,
                sl:sl
            },
            success:function(res){
                show1()
            }
        });
    }
}

后台文件 index.js

// 写录入系统的接口
var express = require('express');
var router = express.Router();
// 引入数据库
var db = require('../modules/db.js');
console.log("db:", db);
// 引入mongodb  解决id问题
var mongodb = require('mongodb');

var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({extended: false});

//cors跨域
router.use("*", function(req, res, next) {
	res.header('Access-Control-Allow-Origin', '*');
	res.header("Access-Control-Allow-Methods", "*");
	res.header("Access-Control-Allow-Headers", "*");
	next();
}); 

/* GET users listing. */
router.get('/', function(req, res, next) {
    //res.render('index', { title: 'Express' });
    res.sendFile(__dirname+'/index.html');
    res.sendFile(__dirname+'/qd/qd.html');
    res.sendFile(__dirname+'/hd/hd.html');
  });
  

//添加
router.post('/addPost', urlencodedParser, function(req, res) {
    var obj = req.body;
    console.log("obj:", obj);
    db.insert(res, "shoppingListX", obj, function(err, result, db) {
        if(err) {
            console.log("数据存入失败:", err);
            res.send({error: 2});
        } else {
            console.log("数据存入成功");
            res.send(result.result);
            db.close();
        }
    })
});
// 渲染
router.get('/getContent', function(req, res) {
    var obj = req.query;
    console.log("obj:", obj);
    db.find(res, "shoppingListX", obj, function(err, result, db) {
        if(err) {
            console.log("数据查询失败:", err);
            res.send({error: 2});
        } else {
            console.log("数据查询成功");
            res.send(result);
            db.close();
        }
    })
});
// 删除接口 delePost
router.post('/delePost', urlencodedParser, function(req, res) {
    var obj = req.body;
    var key = Object.keys(obj)[0];
    var id = mongodb.ObjectId(obj[key]);
    var data = {
        _id: id
    }
     db.delete(res, "shoppingListX", data, function(err, result, db) {
        if(err) {
            console.log("数据删除失败:", err);
            res.send({error: 2});
        } else {
            console.log("数据删除成功");
            res.send(result.result);
            db.close();
        }
    })
});

// 修改  
router.post("/updatePost", urlencodedParser, function(req, res) {
    var data = req.body;
    // console.log("data:", data);
    var id = mongodb.ObjectId(data.id);
    data.shopPrice = data.shopPrice - 0;
    // 修改    条件    修改后的数据
    var whereObj = {
        _id: id
    }
    var updateObj = {
        $set: data
    }
    db.update(res, "shoppingListX", whereObj, updateObj, function(err, result, db) {
        if(err) {
            console.log("数据修改失败:", err);
            res.send({error: 2});
        } else {
            console.log("数据修改成功");
            res.send(result.result);
            db.close();
        }
    })
});

// 搜索
router.post('/tabData', urlencodedParser, function(req, res) {
    var obj = req.body;
    // console.log("obj:", obj);
    if(obj._id){
        obj._id = mongodb.ObjectId(obj._id);
    }
    var whereObj = {
        find: obj
    }
    db.find(res, "shoppingListX", whereObj, function(err, result, db) {
        if(err) {
            console.log("数据查找失败:", err);
            res.send({error: 2});
        } else {
            res.send(result);
            db.close();
        }
    })
});

// 排序
router.post('/sortPost', urlencodedParser, function(req, res) {
    var obj = req.body;
	var key = Object.keys(obj)[0];
    // console.log("obj:", obj)
    obj[key] ? obj[key] = obj[key] - 0 : "";
    var whereObj = {
        sort: obj
    }
    db.find(res, "shoppingListX", whereObj, function(err, result, db) {
        if(err) {
            console.log("数据查找失败:", err);
            res.send({error: 2});
        } else {
            res.send(result);
            db.close();
        }
    })
})

//全部删除
router.post('/alldelPost', urlencodedParser, function(req, res) {
    var obj ={}
    
     db.delete(res, "shoppingListX", obj, function(err, result, db) {
        if(err) {
            console.log("数据删除失败:", err);
            res.send({error: 2});
        } else {
            console.log("数据删除成功");
            res.send(result.result);
            db.close();
        }
    })
});

// 分页
router.post('/fyData', urlencodedParser, function(req, res) {
    var obj = req.body;
    // console.log("obj:", obj);
    var whereObj = {
        limit:Number(obj.limit),
        skip:Number(obj.skip)
    }
    console.log("whereObj::::::::::",whereObj)
    db.find(res, "shoppingListX", whereObj, function(err, result, db) {
        if(err) {
            console.log("数据查找失败:", err);
            res.send({error: 2});
        } else {
            res.send(result);
            db.close();
        }
    })
});


//添加
router.post('/add', urlencodedParser, function(req, res) {
    var obj = req.body;
    console.log("obj:", obj);
    db.insert(res, "shoppingListY", obj, function(err, result, db) {
        if(err) {
            console.log("数据存入失败:", err);
            res.send({error: 2});
        } else {
            console.log("数据存入成功");
            res.send(result.result);
            db.close();
        }
    })
});
// 渲染
router.get('/content', function(req, res) {
    var obj = req.query;
    console.log("obj:", obj);
    db.find(res, "shoppingListY", obj, function(err, result, db) {
        if(err) {
            console.log("数据查询失败:", err);
            res.send({error: 2});
        } else {
            console.log("数据查询成功");
            res.send(result);
            db.close();
        }
    })
});
// 删除接口 delePost
router.post('/dele', urlencodedParser, function(req, res) {
    var obj = req.body;
    var key = Object.keys(obj)[0];
    var id = mongodb.ObjectId(obj[key]);
    var data = {
        _id: id
    }
     db.delete(res, "shoppingListY", data, function(err, result, db) {
        if(err) {
            console.log("数据删除失败:", err);
            res.send({error: 2});
        } else {
            console.log("数据删除成功");
            res.send(result.result);
            db.close();
        }
    })
});

// 修改  
router.post("/update", urlencodedParser, function(req, res) {
    var data = req.body;
    // console.log("data:", data);
    var id = mongodb.ObjectId(data.id);
    data.shopPrice = data.shopPrice - 0;
    // 修改    条件    修改后的数据
    var whereObj = {
        _id: id
    }
    var updateObj = {
        $set: data
    }
    db.update(res, "shoppingListY", whereObj, updateObj, function(err, result, db) {
        if(err) {
            console.log("数据修改失败:", err);
            res.send({error: 2});
        } else {
            console.log("数据修改成功");
            res.send(result.result);
            db.close();
        }
    })
});

// 搜索
router.post('/tab', urlencodedParser, function(req, res) {
    var obj = req.body;
    // console.log("obj:", obj);
    if(obj._id){
        obj._id = mongodb.ObjectId(obj._id);
    }
    var whereObj = {
        find: obj
    }
    db.find(res, "shoppingListY", whereObj, function(err, result, db) {
        if(err) {
            console.log("数据查找失败:", err);
            res.send({error: 2});
        } else {
            res.send(result);
            db.close();
        }
    })
});


module.exports = router;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值