index.ejs文档:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图书管理</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1 style="text-align: center; margin-bottom: 40px;">图书管理系统</h1>
<div action="" class="form-inline">
<div class="form-group">
<label for="bookName">图书名字:</label>
<input type="text" class="form-control" id="bookName">
</div>
<div class="form-group">
<label for="bookName">图书作者:</label>
<input type="text" class="form-control" id="bookAuthor">
</div>
<div class="form-group">
<label for="bookName">图书出版社:</label>
<input type="text" class="form-control" id="bookPublish">
</div>
<button class="btn btn-success" id="addBook">添加图书</button>
</div>
<table class="table table-hover table-bordered table-striped" style="margin-top: 40px;">
<thead>
<tr>
<th style="text-align: center;">ID</th>
<th style="text-align: center;">图书名字</th>
<th style="text-align: center;">图书作者</th>
<th style="text-align: center;">图书出版社</th>
<th style="text-align: center;">操作</th>
</tr>
</thead>
<tbody id="tb">
</tbody>
</table>
<div class="footer">
<p>总共有<span id=total></span>本图书,
一页显示<span id=pagesize></span>
当前是<span id=page></span>/<span id=size></span>页
<a href="#" id=prev>上一页</a>
<a href="#" id=next>下一页</a>
</p>
</div>
</div>
<script src="/jquery-1.11.3.js"></script>
<script>
let page = 1;
function getBookList(page) {
$.get("/list", { page }, res => {
let str = ``;
res.data.books.forEach((item, index) => {
str += `
<tr>
<td style="text-align: center;">${index + 1}</td>
<td style="text-align: center;">${item.bookName}</td>
<td style="text-align: center;">${item.bookAuthor}</td>
<td style="text-align: center;">${item.bookPublish}</td>
<td style="text-align: center;"><a href="javascript:;" class="del" data-id=${item._id}>删除</a></td>
</tr>
`
})
$("#tb").html(str)
$("#total").html(res.data.total)
$("#pageSize").html(res.data.pageSize)
$("#page").html(res.data.page)
$("#size").html(res.data.size)
$(".del").click(function () {
let isok = confirm("你确定要删除此图书吗?");
if (isok) {
let id = $(this).attr("data-id");
$.get("/del", { id }, res => {
if (res.code == 1) {
return alert("删除图书失败")
}
alert("删除图书成功")
getBookList(1)
})
}
});
})
}
getBookList(page);
$("#addBook").click(function () {
let bookName = $("#bookName").val().trim();
let bookAuthor = $("#bookAuthor").val().trim();
let bookPublish = $("#bookPublish").val().trim();
if (bookName.length <= 0 || bookAuthor.length <= 0 || bookPublish.length <= 0) {
return alert("请填写完整的图书信息~");
}
$.post("http://localhost:3000/add", { bookName, bookAuthor, bookPublish }), res => {
if (res.code == 1) {
return alert("添加图书成功~")
} else {
return alert("添加图书失败~")
}
}
$("#bookName").val("")
$("#bookAuthor").val("")
$("#bookPublish").val("")
getBookList($("#size").html());
})
$("#next").click(function (e) {
e.preventDefault();
if (page < $("#size").html()) {
getBookList(++page)
}
});
$("#prev").click(function (e) {
e.preventDefault();
if (page > 1) {
getBookList(--page)
}
});
</script>
</body>
</html>
js文档:
let express = require("express");
let path = require("path");
let ejs = require("ejs")
let bodyParser = require("body-parser")
let MongoClient = require('mongodb').MongoClient;
let url = "mongodb://localhost:27017/";
let app = express();
app.set("views", "./views");
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json())
app.use(express.static(path.resolve(__dirname, "./public")))
app.get("/", (req, res) => {
res.render("index1.ejs");
})
app.get("/list", (req, res) => {
let page = req.query.page || 1;
(page <= 0) && (page = 1)
let pagesize = 3;
let offset = (page - 1) * pagesize;
MongoClient.connect(url, { useNewUrlParser: true }, function (err, db) {
if (err) throw err;
var dbo = db.db("books");
dbo.collection("booklist").find().skip(offset).limit(pagesize).toArray(function (err, result) {
if (err) {
res.json({code:1,
data:"获取图书资源失败~"
})
}
dbo.collection("booklist").count().then(result2=>{
let total = result2;
let size = Math.ceil(total / pagesize);
res.json({code:0,data:{
books:result,
total,
pagesize,
page,
size,
}})
})
console.log(result);
db.close();
});
});
})
app.post("/add", (req, res) => {
MongoClient.connect(url, { useNewUrlParser: true }, function (err, db) {
if (err) throw err;
var dbo = db.db("books");
dbo.collection("booklist").insertOne(req.body, function (err, response) {
if (err) {
res.json({ code: 1, msg: "添加图书失败~" })
}
res.json({ code: 0, msg: "添加图书成功~" })
db.close();
});
});
})
app.get("/del",(req,res)=>{
let id = req.query.id;
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("books");
var whereStr = {_id:ObjectId(id)};
dbo.collection("booklist").deleteOne(whereStr, function(err, obj) {
if (err){
res.json({
code:1,
msg:"删除失败,查看你的网络情况"
})
}else{
res.json({
code:0,
msg:"删除成功"
})
}
db.close();
});
});
})
app.listen(3000, (req, res) => {
console.log("3000 is ok !");
})

注意
需要用到mongodb数据库,可视化工具为Robo 3T 1.4.2
手动激活mongodb方法:打开软件安装目录下的/bin,输入命令窗口cmd,输入"mongod -- dbpath=d:/mongo/data",即可激活使用,再用可视化应用连接。