nodejs----mongoDB操作封装使用

前言

本文主要讲的是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版本, 增删改查或许和其他版本有些出入

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值