封装模块实现增删改查

2020.12.29 23:06

01.封装dao模块

//dao.js
const MongoClient=require('mongodb').MongoClient;
//连接到mongodb
const url="mongodb://localhost:27017";

//使用高阶函数
//将连接数据库的代码封装成函数
//将操作数据库的代码封装成函数作为参数
function connect(callback){
    MongoClient.connect(url,(err,db)=>{
        if(err) throw err;
        callback(db);
    });
}

02.增加数据

前台:

<!--index.html-->
<h1>登录</h1>
<form action="http://localhost:8989/add">
    <input type="text" placeholder="用户名" name="username"><br><br>
    <input type="password" placeholder="密码" name='password'><br><br>
    <input type="submit" value="提交">
</form>

在这里插入图片描述

后台:

//dao.js
//封装的添加函数
module.exports.insert=(data,res)=>{
    connect(db=>{
    	//操作哪个数据库
        var insertdbo=db.db('users');
        //判断
        data=(data instanceof Array)?data:[data];
        insertdbo.collection('userdata').insertMany(data,(err,res1)=>{
            if(err) throw err;
            db.close();
            //向前端返回写入的数据
            res.send(data);
        });
    })
}

//02.js
const express=require('express');
const app=express();
//引入封装的dao.js
const dao=require('./model/dao.js');

//借助express模块通过读取静态资源更直观看到操作数据库的结果
app.use('/',express.static('./www/form'));

//增加数据
app.get('/add',(req,res)=>{
	let user={//要增加的数据
	    username:req.query.username,
	    password:req.query.password
	};
	//调用添加函数并传入添加的数据
	dao.insert(user,res);
});

增加两个用户:张三和李四
在这里插入图片描述
在这里插入图片描述

03.查询数据

前台:

<h1>查找</h1>
<form action="http://localhost:8989/find">
    <input type="text" placeholder="用户名" name="username"><br><br>
    <input type="submit" value="寻找用户">
</form>

在这里插入图片描述

后台:

//dao.js
//封装的查询函数
module.exports.find=(condition,res)=>{
    connect(db=>{
        var finddbo=db.db('users');
        finddbo.collection('userdata').find(condition).toArray((err,result)=>{
            if(err) throw err;
            db.close();
            res.send(result);
        });
    });
}

//02.js
//查询数据
app.get('/find',(req,res)=>{
    //如果查询条件为空就查询所有数据,否则就按条件查询
    let condition=req.query.username==''?{}:{username:req.query.username};
    //调用查询函数并传入查询条件
    dao.find(condition,res);
});

查询所有用户:
在这里插入图片描述
查询用户张三:
在这里插入图片描述
查询用户李四:
在这里插入图片描述

04.更新数据

前台:

<h1>更新</h1>
<form action="http://localhost:8989/update">
    <input type="password" placeholder="原来的密码" name="oldpwd"><br><br>
    <input type="password" placeholder="新密码" name="newpwd"><br><br>
    <input type="submit" value="更改密码">
</form>

在这里插入图片描述

后台:

//dao.js
//封装更新数据函数
module.exports.update=(olddata,newdata,res)=>{
    connect(db=>{
        //更新数据
        var updatedbo=db.db('users');
        updatedbo.collection('userdata').updateOne(olddata,newdata,(err,obj)=>{
            if(err) throw err;
            //更新后查询验证是否更新成功
            var finddbo=db.db('users');
            finddbo.collection('userdata').find({}).toArray((err,result)=>{
                if(err) throw err;
                db.close();
                res.send(result);
            });
        });
    })
}

//02.js
//更新数据
app.get('/update',(req,res)=>{
    //旧数据
    let olddata={password:req.query.oldpwd};
    //更新的数据
    let newdata={$set:{password:req.query.newpwd}};
    //调用更新函数并传入更新的数据
    dao.update(olddata,newdata,res);
});

将张三的密码改为xinmima
在这里插入图片描述
将李四的密码也改成新密码
在这里插入图片描述

05.删除数据

前台:

<h1>删除</h1>
<form action="http://localhost:8989/delete">
    <input type="text" placeholder="用户名" name="username"><br><br>
    <input type="submit" value="删除账户">
</form>

在这里插入图片描述

后台:

//dao.js
//封装的删除数据的函数
module.exports.delete=(deletedata,res)=>{
    connect(db=>{
        //删除数据
        var deletedbo=db.db('users');
        deletedbo.collection('userdata').deleteOne(deletedata,(err,obj)=>{
            if(err) throw err;
            //删除后再查询验证是否删除成功
            var finddbo=db.db('users');
            finddbo.collection('userdata').find({}).toArray((err,result)=>{
                if(err) throw err;
                db.close();
                res.send(result);
            });
        });
    })
}
//02.js
//删除数据
app.get('/delete',(req,res)=>{
    //要删除的数据
    let deletedata={username:req.query.username};
    //调用删除函数并传入要删除的数据
    dao.delete(deletedata,res);
})

此时数据库一共两个用户:张三和李四

删除用户张三(剩李四):
在这里插入图片描述
再删除李四(剩空):
在这里插入图片描述

06.密码加密

通过md5进行加密

const express=require('express');
const app=express();
const dao=require('./model/dao.js');
//引入加密用的md5模块
const md5=require('md5');

app.use('/',express.static('./www/form'));

//增加数据
app.get('/add',(req,res)=>{
    let user={//要增加的数据
        username:req.query.username,
        //将密码进行两次加密
        password:md5(md5(req.query.password))
    };
    dao.insert(user,res);
});

加密后的密码:
在这里插入图片描述
对比没加密过的密码:
在这里插入图片描述

md5加密同一个密码的结果相同

console.log(md5(md5(456))==md5(md5(456)));
在这里插入图片描述
加密后登陆时输入相同的密码即可正常登陆

2020.12.30 0:59

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值