自定义前后端及 mongodb数据库,并封装dao(增删改查操作)
文件路径结构
|——qemo
|——node_modules
|——www
|——from
|——index.html
|——model
|——dao.js
|——package.json
|——text-mongodb02.js
index.html 前端页面(不含样式):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>简易用户页面</h1>
<h3>GET注册-增</h3>
<form action="http://localhost:8989/addDataGET">
<input type="text" placeholder="请输入用户名" name="name">
<input type="password" placeholder="请输入密码" name="pass">
<input type="submit">
</form>
<hr>
<h3>POST注册-增</h3>
<form action="http://localhost:8989/addData" method="post">
<input type="text" placeholder="请输入用户名" name="name">
<input type="password" placeholder="请输入密码" name="pass">
<input type="submit">
</form>
<hr>
<h3>GET登录-查</h3>
<form action="http://localhost:8989/searchData">
<input type="text" placeholder="请输入用户名" name="name">
<input type="password" placeholder="请输入密码" name="pass">
<input type="submit">
</form>
<hr>
<h3>查询所有数据</h3>
<form action="http://localhost:8989/searchAllData">
<input type="text" placeholder="请输入用户名" name="name">
<input type="password" placeholder="请输入密码" name="pass">
<input type="submit">
</form>
<hr>
<h3>GET修改信息-改</h3>
<form action="http://localhost:8989/updateData">
<input type="text" placeholder="请输入用户名" name="name">
<input type="password" placeholder="请输入密码" name="pass">
<input type="password" placeholder="请重新输入新密码" name="newpass">
<input type="submit">
</form>
<hr>
<h3>GET删除信息-删</h3>
<form action="http://localhost:8989/deleteData">
<input type="text" placeholder="请输入用户名" name="name">
<input type="password" placeholder="请输入密码" name="pass">
<input type="submit">
</form>
</body>
</html>
text-mongodb02.js 自定义本地Node express后台
const express = require('express');
const app = express();
const dao = require('./model/dao');
const md5 = require('md5');// md5加密 一般进行多层加密 一般是2-3层
// 引入处理post参数的模块
var bodyParser = require('body-parser')
var urlencodedParser = bodyParser.urlencoded({extended: false})
app.use('/', express.static('./www/form'));//呈递静态资源
// 增加数据 post请求并加密
app.post('/addData', urlencodedParser, (req, res) => {//req 请求, res 响应
var myobj = {name: req.body.name, pass: md5(req.body.pass)};
console.log('POST 请求');
dao.insert(myobj, res, (r) => {
res.send(r);//成功插入的数据信息
});
})
// 增加数据 get请求
app.get('/addDataGET', (req, res) => {//req 请求, res 响应
var myobj = {name: req.query.name, pass: req.query.pass};
console.log('GET 请求');
dao.insert(myobj, res, (r) => {
res.send(r);//成功插入的数据信息
});
})
//删除数据
app.get('/deleteData', (req, res) => {
var deleteobj = {name: req.query.name, pass: req.query.pass};
console.log(deleteobj);
dao.delete(deleteobj, res, (r) => {
res.send(r);//成功删除的数据信息
});
})
//修改数据
app.get('/updateData', (req, res) => {
var oldData = {name: req.query.name, pass: req.query.pass};
var newData = {$set: {pass: req.query.newpass}};
console.log(oldData);
console.log(newData);
dao.update(oldData, newData, res, (r) => {
res.send(r);//成功修改的数据信息
});
})
//查询数据
app.get('/searchData', (req, res) => {
var myobj = {name: req.query.name, pass: req.query.pass};
console.log(myobj);
dao.search(myobj, res, (r) => {
res.send(r);//成功插入的数据信息
});
})
//查询所有数据
app.get('/searchAllData', (req, res) => {
var myobj = {name: req.query.name, pass: req.query.pass};
dao.searchAll(myobj, res, (r) => {
res.send(r);//成功插入的数据信息
});
})
//监听端口
app.listen('8989');
dao.js 封装 mongodb 数据库增删改查操作
//数据库操作
//module.exports 导出数据
var MongoClient = require('mongodb').MongoClient;//引入数据库
var url = "mongodb://localhost:27017/runoob";//数据库地址
/**
* 链接数据库
* 链接数据库是异步操作,不清楚什么时候链接成功,所以用到回调函数的方式
* @param callback 数据库操作
*/
function _connect(callback) {
MongoClient.connect(url, function (err, db) {//db 数据库链接成功后返回的数据
//数据库链接成功
if (err) throw err;
//执行传入的回调方法中的数据库操作
callback(db);
});
}
/**
* 增加数据
* @param myobj 需要插入的数据
* @param res
* @param callback
*/
module.exports.insert = function (myobj, res, callback) {
_connect((db) => {//db,链接成功的数据
var dbo = db.db("students");//创建或链接,当前操作的数据库 db.db("操作的数据库")
if (myobj instanceof Array) {
myobj = myobj;
} else {
myobj = [myobj];
}
//insertOne 插入一条数据 myobj || insertMany 插入多条数据是数组 [myobj]
dbo.collection("stu3").insertMany(myobj, function (err, r) { //dbo数据库.collection("操作的集合").insertOne(插入的一条数据内容,(err,r)=>{})
if (err) throw err;
console.log("文档插入成功");//后台打印
db.close();
callback(r);//参数 r : 成功插入的数据信息
});
})
}
/**
* 删除数据
* @param res
* @param callback
*/
module.exports.delete = function (deleteobj, res, callback) {
_connect(function (db) {
var dbo = db.db("students");
dbo.collection("stu3").deleteMany(deleteobj, function (err, r) {
// 返回集合中所有数据
if (err) throw err;
console.log('内容已删除...');//后台打印
db.close();
callback(r);
});
})
}
/**
* 修改数据
* @param res
* @param callback
*/
module.exports.update = function (oldData, newData, res, callback) {
_connect(function (db) {
var dbo = db.db("students");
dbo.collection("stu3").updateMany(oldData, newData, function (err, r) {
// 返回集合中所有数据
if (err) throw err;
console.log('查询的内容已为您修改...');//后台打印
db.close();
callback(r);
});
})
}
/**
* 查询数据
* @param res
* @param callback
*/
module.exports.search = function (myobj, res, callback) {
_connect((db) => {
var dbo = db.db("students");//创建或链接,当前操作的数据库
dbo.collection("stu3").find(myobj).toArray(function (err, r) { // 返回集合中所有数据
if (err) throw err;
console.log('已帮你查询到匹配数据!');//后台打印
db.close();
callback(r);
});
})
}
/**
* 查询所有数据
* @param res
* @param callback
*/
module.exports.searchAll = function (myobj, res, callback) {
_connect((db) => {
var dbo = db.db("students");//创建或链接,当前操作的数据库
dbo.collection("stu3").find({}).toArray(function (err, r) { // 返回集合中所有数据
if (err) throw err;
console.log('已查询到全部数据...');//后台打印
db.close();
callback(r);
});
})
}