前端使用 node 调取数据库 mongoDB 并进行增删改等操作(已封装,可直接复制)

开头

  • 整体代码在最下面,中间为介绍阶段 ------- 直达按钮

  • 本次封装用到了 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)
        })
    }


}

发布了74 篇原创文章 · 获赞 7 · 访问量 2201

猜你喜欢

转载自blog.csdn.net/qq_44163269/article/details/105372640