前言
本文主要讲的是nodejs对mongodb的增删改查封装
前置条件: 已经安装mongodb并配置环境, 已开启mongo服务, 安装并挂载mongodb插件
思路
单独写一个操作mongoDB的模块,首先编写连接mongoDB的公共函数, 连接函数返回的client传入连接函数的回调,
增删改查这四种操作中调用连接函数,通过传入的client,获取mongodb对象之后做出相对应操作,最后导出这个四种方法待用
封装
以下封装基于 mongodb 3.x
- 编写连接mongoDB的公共函数
const DBurl = "mongodb://localhost:27017/";
const MongoClient = require('mongodb').MongoClient; //初始化mongodb
const dbName = "demo"; //数据库名
function _connectDB(connectCallback) {
MongoClient.connect(DBurl, { useNewUrlParser: true }, function(error,client){
if(error) {
console.log('连接mongodb失败')
return;
}
console.log('连接mongodb成功')
connectCallback(client) //连接后的回调
})
}
- 查
@params: 表名, 查寻条件json, 获取结果后的回调
exports.find = function(collectionsName, json, callback) {
_connectDB( function(client) {
let db = client.db(dbName)
db.collection(collectionsName).find(json).toArray(function(erroror, data) {
if(erroror){
console.log("查询失败:",error)
return
}
client.close()
callback(data)
})
})
}
- 增
@params: 表名, 插入条件json或者array, 获取结果后的回调
tips:
json为插入的单条
array为多条
exports.insert = function(collectionsName, jsonOrArray, callback){
_connectDB( function(client) {
let db = client.db(dbName)
//插入单条
if( !Array.prototype.isPrototypeOf(jsonOrArray) ){
db.collection(collectionsName).insertOne(jsonOrArray, function(erroror, data) {
if(erroror){
console.log("插入失败:",error)
return
}
client.close()
callback(data)
})
}
//插入多条
if( Array.prototype.isPrototypeOf(jsonOrArray) ){
db.collection(collectionsName).insert(jsonOrArray, function(erroror, data) {
if(erroror){
console.log("插入失败:",error)
return
}
client.close()
callback(data)
})
}
})
}
- 改
@params: 表名, 基于条件(json), 更新条件(json), 获取结果后的回调
exports.update= function(collectionsName, json1, json2, callback){
_connectDB(function(client){
let db = client.db(collectionsName)
db.collection(collectionsName).updateOne(json1,{$set:json2},function(erroror, updated) {
if(erroror){
console.log("更新失败:",error)
return
}
client.close()
callback(updated)
})
})
}
- 删除
@params: 表名, 删除条件json或者array, 获取结果后的回调
tips:
json为删除的单条
array为多条`
exports.delete= function(collectionsName, jsonOrArray, callback){
_connectDB(function(client){
let db = client.db(collectionsName)
//删除单条
if( !Array.prototype.isPrototypeOf(jsonOrArray) ){
db.collection(collectionsName).deleteOne(jsonOrArray, function(erroror, data){
if(erroror){
console.log("删除单个失败:",erroror)
return
}
client.close()
callback(data)
})
} else {
//删除多条
db.collection(collectionsName).deleteMany({$or: jsonOrArray}, function(erroror, data){
if(erroror){
console.log("删除多个失败:",erroror)
return
}
client.close()
callback(data)
})
}
})
}
以上操作基于mongodb3.x版本, 增删改查或许和其他版本有些出入