/在前端开发过程中,有的时候后端接口和数据没有给过来的时候,这时候为了在不影响项目进度的条件下,有的时候也需要前段搭建一个简易的服务器,建立一个数据库,进行前后端交互的操作,这时候,我们使用nodejs来搭建服务器的话是比较轻松的,因为nodejs的语法和JavaScript的语法几乎一样,而我们服务器搭建起来后呢,就需要进行一系列的数据库操作,当然,在这里首先推荐的数据库是MongoDB,因为MongoDB也是被称为NoSql的。所以,当我们使用MongoDB数据库时,配合nodejs,可以轻松快捷的进行兜库操作,提升开发效率,下面,就是简易封装的兜库操作。/
// 因为这个封装使用了第三方包mongodb 所以,在开始使用前需要安装第三方包
在终端安装第三方包 npm i mongodb -S
//1、引入这个包
let mongodb = require('mongodb')
//2、创建服务器链接地址,如果localhost被占用可以换成127.0.0.1
let url = 'mongodb://localhost:27017'
//3、创建链接库的库名
**let dbName = ' liu ' // liu 为本人的 仓库名 使用时换成自己的库名 (database)**
**/*obj 必传参数 是一个对象 ,
tableName:表名,
data 查删增为对象,改为数组,数组传两个对象 ,第一个,需要修改的数据的条件,第二个,修改的数据
cb 回调函数
写法实例
{
tableName:表名,
data:{增删查} || [{改前},{改后}]
cb(result){
console.log(result)
}
}**
*/
//增
let insert =(obj)=>{
//使用mongodb包的connect来实例化一个链接体 这个方法回调函数中的clinet是返回一个已经链接到服务器端上的连接体
mongodb.connect(url,{useUnifiedTopology:true},(err,clinet)=>{
if(err) throw err
let db = clinet.db(dbName) // 服务器链接体链接库名 返回链接到库的链接体
let colltions=db.collection(obj.tableName) //库链接体链接集合名,返回到链接到集合的链接体
colltions.insertOne(obj.data,(err,result)=>{ // 集合链接体进行数据的操作,
if(err) throw err
obj.cb(result.result) //返回格式为{ n: 1, nModified: 0, ok: 1 } n 发生改变的条数 nModified 未修改的条数 ok 1 为成功 0为失败
clinet.close()
})
})
}
//删
let removeDate =(obj)=>{
mongodb.connect(url,{useUnifiedTopology:true},(err,clinet)=>{
if(err) throw err
let db = clinet.db(dbName)
let colltions=db.collection(obj.tableName)
colltions.deleteOne(obj.data,(err,result)=>{
if(err) throw err
obj.cb(result.result)
//返回格式为{ n: 1, nModified: 0, ok: 1 } n 发生改变的条数 nModified 未修改的条数 ok 1 为成功 0为失败
clinet.close()
})
})
}
//改
let update =(obj)=>{
mongodb.connect(url,{useUnifiedTopology:true},(err,clinet)=>{
if(err) throw err
let db = clinet.db(dbName)
let oldval = obj.data[0]
let newval = obj.data[1]
let colltions=db.collection(obj.tableName)
colltions.updateOne(oldval,newval,(err,result)=>{
if(err) throw err
obj.cb(result.result)
//返回格式为{ n: 1, nModified: 0, ok: 1 } n 发生改变的条数 nModified 未修改的条数 ok 1 为成功 0为失败
clinet.close()
})
})
}
//查
let find =(obj)=>{
mongodb.connect(url,{useUnifiedTopology:true},(err,clinet)=>{
if(err) throw err
let db = clinet.db(dbName)
let colltions=db.collection(obj.tableName)
colltions.find(obj.data).toArray((err,resullt)=>{
if(err) throw err
obj.cb(resullt) // 返回一个数组,数组里面每一个对象对应所查询的每一条数据 如果数据为空,则返回一个空数组
clinet.close()
})
})
}
let findT =(obj)=>{ //分页查询
mongodb.connect(url,{useUnifiedTopology:true},(err,clinet)=>{
if(err) throw err
let db = clinet.db(dbName)
let colltions=db.collection(obj.tableName)
colltions.find( ).skip(obj.page*1).limit(obj.num*1).toArray((err,resullt)=>{
if(err) throw err
obj.cb(resullt)
clinet.close()
})
})
}
module.exports={
find,
update,
removeDate,
insert,
findT
}