开头
-
整体代码在最下面,中间为介绍阶段 ------- 直达按钮
-
本次封装用到了 mongodb 模块,需 npm 下载
-
本文不涉及二次封装(代码更整洁)
-
封装之后的代码尽量不要去改动
-
封装之后的代码尽量的满足不同的需求。
cnpm install mongodb -S
内容介绍
- 第一步⬇⬇
- 导入 mongodb 模块
const mongodb = require("mongodb");
- 第二步⬇⬇
- 定义一个变量 mongoClient
- 这个模块中给你 提供了一个属性 MongoClient,是一个构造函数
const mongoClient = mongodb.MongoClient;
const ObjectId = mongodb.ObjectId;
-
第三步⬇⬇
-
定义链接
MongoClient 对象下面给你了一个方法 connect() //可以通过它连接数据库
_connect() 连接数据的方法,当你的函数只是在当前环境当中使用时,建议以下划线开头
cb 回调函数 传递的函数,在异步的时候能够使用它运行函数,能返回结果
第一个参数 mongodb://127.0.0.1:27017 是mongodb专属的地址
第二个参数 未来版本可能移出一些东西,使用 useUnifiedTopology: true最新的匹配规则,应该是新的地址的解析
第三个参数 是回调函数(err,client)
err 发生异常了
client 数据连接完成以后数据库给你提供的一个操作数据的入口
function _connect(cb){
mongoClient.connect("mongodb://127.0.0.1:27017",{useUnifiedTopology: true },(err,client)=>{
if(err) console.log("连接失败")
else{
const db = client.db("ele"); //指定你要操作的数据库
//db就是代表你的数据库
cb(db); //将 db 返回出去
}
})
}
为了更直观的了解传递的参数,接口代码如下
app.post("/login",(req,res)=>{
db.findOne("adminList", //参数1
{ //参数 2
adminName,
adminWord:md5(adminWord+"(*^(*&^(*&)")
},
function(err,info){ //参数3
if(err) tools.json(res);
else{
... ....
} //他们是一个整体,我分开的为了更好的观察
});
- 第四步⬇⬇
操作数据库
插入一条记录
//collName:指定插入的集合
//insertObj:插入的内容
insertOne(collName, insertObj, cb) {
_connect(db => {
db.collection(collName).insertOne(insertObj, (err, results) => { //err错误信息 results 结果
cb(err, results);
})
})
},
查找多条数据
//collName:指定集合
//obj:是一个对象,包含sort,limit,skip,whereObj*/
find(collName,obj={},cb){
// 解构赋值。
const {skip=0,limit=0,sort={},whereObj={}} = obj;
_connect(db=>{
db.collection(collName).find(whereObj).limit(limit).skip(skip).sort(sort).toArray((err,results)=>{
cb(err,results);
})
})
},
查找一条数据
findOne(collName,whereObj,cb){
_connect(db=>{
db.collection(collName).findOne(whereObj,cb);
})
},
根据ID获得详情
findOneById(collName,id,cb){
_connect(db=>{
// 查找一条信息,findOne 第一个参数是条件,第二个参数是回调
db.collection(collName).findOne({
_id:ObjectId(id)
},cb)
})
},
根据条件获得文档的数量
//collName:指定集合的名字
//whereObj:条件
//cb:回调函数(返回结果)
count(collName,whereObj,cb){
_connect(db=>{
db.collection(collName).countDocuments(whereObj).then(count=>{
cb(count);
})
})
},
根据ID进行删除一条操作,并返回删除以后的结果
deleteOneById(collName,id,cb){
_connect(db=>{
db.collection(collName).deleteOne({
_id:ObjectId(id),// 将字符串转为ObjectId
},cb)
})
},
根据ID进行修改
upDateOneById(collName,id,upObj,cb){
_connect(db=>{
// 第一个参数是条件,第二个参数是修改的内容,第三个参数是回调函数
db.collection(collName).updateOne({
_id:ObjectId(id)
},upObj,cb)
})
}
=========================== 所有的代码 ==============================
const mongodb = require("mongodb");
const mongoClient = mongodb.MongoClient;//
const ObjectId = mongodb.ObjectId;
// 1、封装之后的代码尽量不要去改动
// 2、封装之后的代码尽量的满足不同的需求。
function _connect(cb){
mongoClient.connect("mongodb://127.0.0.1:27017",{useUnifiedTopology: true },(err,client)=>{
if(err) console.log("连接失败")
else{
const db = client.db("ele");
cb(db);
}
})
}
module.exports = {
/*
* 插入一条记录。
* collName:指定插入的集合
* insertObj:插入的内容*/
insertOne(collName,insertObj,cb){
_connect(db=>{
db.collection(collName).insertOne(insertObj,(err,results)=>{
cb(err,results);
})
})
},
/*
* 查找多条数据
* collName:指定集合
* obj:是一个对象,包含sort,limit,skip,whereObj*/
find(collName,obj={},cb){
// 解构赋值。
const {skip=0,limit=0,sort={},whereObj={}} = obj;
_connect(db=>{
db.collection(collName).find(whereObj).limit(limit).skip(skip).sort(sort).toArray((err,results)=>{
cb(err,results);
})
})
},
// 查找一条数据
findOne(collName,whereObj,cb){
_connect(db=>{
db.collection(collName).findOne(whereObj,cb);
})
},
// 根据ID获得详情。
findOneById(collName,id,cb){
_connect(db=>{
// 查找一条信息,findOne 第一个参数是条件,第二个参数是回调
db.collection(collName).findOne({
_id:ObjectId(id)
},cb)
})
},
/**
* 根据条件获得文档的数量
* collName:指定集合的名字
* whereObj:条件
* cb:回调函数(返回结果)
*/
count(collName,whereObj,cb){
_connect(db=>{
db.collection(collName).countDocuments(whereObj).then(count=>{
cb(count);
})
})
},
// 根据ID进行删除一条操作,并返回删除以后的结果
deleteOneById(collName,id,cb){
_connect(db=>{
// 语法。find insertOne,insertMany ,deleteOne
// 第一个参数是删除的条件。第二个参数是一个回调函数,用于接收结果
// db.collection(collName).deleteOne({
// _id:ObjectId(id),// 将字符串转为ObjectId
// },function (err,results) {
// cb(err,results);
// })
db.collection(collName).deleteOne({
_id:ObjectId(id),// 将字符串转为ObjectId
},cb)
})
},
// 根据ID进行修改。
upDateOneById(collName,id,upObj,cb){
_connect(db=>{
// 第一个参数是条件,第二个参数是修改的内容,第三个参数是回调函数
db.collection(collName).updateOne({
_id:ObjectId(id)
},upObj,cb)
})
}
}