mongodb+jq分页案例

文件目录

在这里插入图片描述

数据库 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.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.sendFile(__dirname+'/index.html');
  });

var urls = "shoppingList33"

//添加
router.post('/addPost', urlencodedParser, function(req, res) {
    var obj = req.body;
    db.insert(res, urls, 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;
    db.find(res, urls, 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, urls, 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;
    var id = mongodb.ObjectId(data.id);
    data.shopPrice = data.shopPrice - 0;
    // 修改    条件    修改后的数据
    var whereObj = {
        _id: id
    }
    var updateObj = {
        $set: data
    }
    db.update(res, urls, 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;
	if(obj._id){
		obj._id = mongodb.ObjectId(obj._id);
	}
    var whereObj = {
        find: obj
    }
    db.find(res, urls, 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];
    obj[key] ? obj[key] = obj[key] - 0 : "";
    var whereObj = {
        sort: obj
    }
    db.find(res, urls, 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, urls, 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;
    var whereObj = {
        limit:Number(obj.limit),
        skip:Number(obj.skip)
    }
    db.find(res, urls, whereObj, function(err, result, db) {
        if(err) {
            console.log("数据查找失败:", err);
            res.send({error: 2});
        } else {
            res.send(result);
            db.close();
        }
    })
});


module.exports = router;

前端

index.ltml

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!-- <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0"> -->
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<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>
		<p>
			&emsp;&emsp;姓名: <input type="text" class="user">
		</p>
		<p>
			&emsp;&emsp;薪资: <input type="number" class="salary">
		</p>
		<p>
			公司名称: <input type="text" class="company">
		</p>
		<p>
			<button type="button" class="add">添加</button>
		</p>
		<table border="1" cellspacing="0" cellpadding="0" width="700px">
			<thead>
				<tr>
					<th>录入序号</th>
					<th>姓名</th>
					<th>薪资</th>
					<th>公司名称</th>
					<th>录入时间</th>
					<th>操作</th>
				</tr>
			</thead>
			<tbody>
				<!-- <tr>
					<td>${i+1}</td>
					<td>${arr[i].user}</td>
					<td>${arr[i].salary}</td>
					<td>${arr[i].company}</td>
					<td>${arr[i].id}</td>
					<td>
						<a href="javascript:void(0)" onclick=del('${arr[i]._id}')>删除</a>
					</td>
				</tr> -->
			</tbody>
		</table>
		<p class="p"></p>
		<button type="button" class="sy">首页</button>
		<button type="button" class="syy">上一页</button>
		<button type="button" class="xyy">下一页</button>
		<button type="button" class="my">末页</button>
	</body>
	<script src="js/new_file.js" type="text/javascript" charset="utf-8"></script>
	<script src="layer/layer.js" type="text/javascript" charset="utf-8"></script>
</html>

new_file.css

*{
	margin: 0;
	padding: 0;
	outline: none;
	text-decoration: none;
	flex-direction: row;
}
.add{
	background-color: darkgreen;
	color: white;
}
a{
	color: #000;
}
a:hover{
	cursor: pointer;
}

new_file.js

fenYe()
function getDateTime(){
    var time = new Date()
    var n = time.getFullYear()
    var y = time.getMonth() + 1
    var d = time.getDate()
    var h = time.getHours()
    var f = time.getMinutes()
    var m = time.getSeconds()
    y < 10 ? y = '0' + y : y
    d < 10 ? d = '0' + d : d
    h < 10 ? h = '0' + h : h
    f < 10 ? f = '0' + f : f
    m < 10 ? m = '0' + m : m
    return n+'年'+ y + '月' + d + '日' + '' + h + ':' + f +':'+ m
}

// skip:(p-1)*3,
// limit:3,
$('.add').click(function(){
    if ($('.user').val()==''||$('.salary').val()==''||$('.company').val()=='') {
        alert('不能为空')    
    } else {
        var obj = {
            id:getDateTime(),
            user:$('.user').val(),
            salary:$('.salary').val(),
            company:$('.company').val()
        }
        $.ajax({
            type:'post',
            url:'/addPost',
            data:obj,
            success:function(res){
                fenYe()
            }
        });
    }
    $('.user').val('')
    $('.salary').val('')
    $('.company').val('')
})

//渲染
function showDom (arr) {
    var str = ''
    for(var i=0; i<arr.length; i++){
        str +=`
        <tr>
            <td>${i+1}</td>
            <td>${arr[i].user}</td>
            <td>${arr[i].salary}</td>
            <td>${arr[i].company}</td>
            <td>${arr[i].id}</td>
            <td>
                <a href="javascript:void(0)" onclick=del('${arr[i]._id}')>删除</a>
            </td>
        </tr>
    `
    }
    $('tbody').html(str)
}
function del(myid){
    $.ajax({
        type:'post',
        url:'/delePost',
        data:{
            k:myid
        },
        success:function(res){
            fenYe()
        }
    });
}

function fenYe(){
    ss()
    var obj = {
        limit:3,
        skip:(p - 1) * 3
    }
    $.ajax({
        type:'post',
        data:obj,
        url:'/fyData',
        success:function(res){
            showDom(res)
        }
    });
}

var b
var p = 1 //页数
function ss(){
    $.ajax({
        type:'get',
        url:'/getContent',
        success:function(res){
            b = Math.ceil(res.length/3) 
            var str = ''
            str = `每页最多显示3条==>共<span class="a2">${b}</span>页==>当前是第<span class="a3">${p}</span>页`
            $('.p').html(str)
        }
    });
}

$('.sy').click(function(){
    p=1
    ss()
    var obj = {
        limit:3,
        skip:0
    }
    $.ajax({
        type:'post',
        data:obj,
        url:'/fyData',
        success:function(res){
            showDom(res)
        }
    });
})

$('.syy').click(function(){
    p = p-1
    if (p<1) {
        alert('已经是第一页')
        p=1
    }else{
        p=p
    }
    ss()
    var obj = {
        limit:3,
        skip:(p - 1) * 3
    }
    $.ajax({
        type:'post',
        data:obj,
        url:'/fyData',
        success:function(res){
            showDom(res)
        }
    });
})

$('.xyy').click(function(){
    p = p+1
    if (p>b) {
        alert('已经是最后一页')
        p=b
    } else {
        p=p
    }
    ss()
    var obj = {
        limit:3,
        skip:(p - 1) * 3
    }
    $.ajax({
        type:'post',
        data:obj,
        url:'/fyData',
        success:function(res){
            showDom(res)
        }
    });
})

$('.my').click(function(){
    p = b
    ss()
    var obj = {
        limit:3,
        skip:(b - 1) * 3
    }
    $.ajax({
        type:'post',
        data:obj,
        url:'/fyData',
        success:function(res){
            showDom(res)
        }
    });
})


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件开发商及电信营运商共同研发改良。 Android操作系统的特点包括: 开放源代码:Android系统采用开放源代码模式,允许开发者自由访问、修改和定制操作系统,这促进了技术的创新和发展,使得Android系统具有高度的灵活性和可定制性。 多任务处理:Android允许用户同时运行多个应用程序,并且可以轻松地在不同应用程序之间切换,提高了效率和便利性。 丰富的应用生态系统:Android系统拥有庞大的应用程序生态系统,用户可以从Google Play商店或其他第三方应用市场下载和安装各种各样的应用程序,满足各种需求。 可定制性:Android操作系统可以根据用户的个人喜好进行定制,用户可以更改主题、小部件和图标等,以使其界面更符合个人风格和偏好。 多种设备支持:Android操作系统可以运行在多种不同类型的设备上,包括手机、平板电脑、智能电视、汽车导航系统等。 此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也在不断提升。例如,最新的Android版本引入了更多的安全性和隐私保护功能,以及更流畅的用户界面和更强大的性能。此外,Android系统也在不断探索新的应用场景,如智能家居、虚拟现实、人工智能等领域。 总之,Android系统是一种功能强大、灵活可定制、拥有丰富应用生态系统的移动操作系统,在全球范围内拥有广泛的用户基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值