日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

koa mysql mongodb_koa 操作MongoDB数据库

發布時間:2025/3/8 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 koa mysql mongodb_koa 操作MongoDB数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安裝

安裝MongoDB

npm install mongodb --save

引入中間件

引入mongodb下面的連接模塊MongoClient

// 引入MongoDB 連接模塊

const MongoClient = MongoDB.MongoClient;

配置中間件

定義數據庫連接的地址以及配置數據庫的名稱

let url = "mongodb://localhost:27017/";

let dbName = "koa";

連接數據庫

nodejs連接數據庫

MongoClient.connect(url,(err,client)=>{

if(err){

console.log(err);

return false;

}

let db = client.db(dbName); //數據庫db對象

});

操作數據庫

MongoClient.connect(url,(err,client)=>{

if(err){

console.log(err);

return false;

}

let db = client.db(dbName); //數據庫db對象

db.collection('user').insertOne({'name':'張三'}, function(err, result){

if(!err){

console.log('數據增加成功');

clinet.close(); //關閉連接

}

});

let cx = db.collection('user').find({});

cx.toArray((err,docs)=>{

console.log(docs);

});

});

封裝MongoDB庫,優化【連接數據庫】和【操作數據庫】操作

最終會有兩個文件,一個是 MongoDB配置文件MongoDB.config.js和一個是MongoDB封裝文件MongoDB.db.js。

MongoDB.config.js文件:

// MongoDB數據庫配置文件

const app = {

// 定義數據庫地址

'dbUrl' : 'mongodb://localhost:27017/',

// 定義數據庫名字

'dbName' : 'koa'

};

module.exports = app;

MongoDB.db.js文件:

/*

封裝DB庫操作

*/

// 引入MongoDB 模塊

const MongoDB = require("mongodb");

// 引入MongoDB 連接模塊

const MongoClient = MongoDB.MongoClient;

// 引入MongoDB ObjectID模塊

const ObjectID = MongoDB.ObjectID;

// 引入配置文件

const Config = require("./MongoDB.config.js");

class Db {

// 單例模式,解決多次實例化時候每次創建連接對象不共享的問題,實現共享連接數據庫狀態

static getInstance() {

if (!Db.instance) {

Db.instance = new Db();

}

return Db.instance;

}

constructor() {

// 屬性 存放db對象

this.dbClient = "";

// 實例化的時候就連接數據庫,增加連接數據庫速度

this.connect();

}

// 連接數據庫

connect() {

return new Promise((resolve, reject) => {

// 解決數據庫多次連接的問題,要不然每次操作數據都會進行一次連接數據庫的操作,比較慢

if (!this.dbClient) {

// 第一次的時候連接數據庫

MongoClient.connect(Config.dbUrl, (err, client) => {

if (err) {

reject(err);

} else {

// 將連接數據庫的狀態賦值給屬性,保持長連接狀態

this.dbClient = client.db(Config.dbName);

resolve(this.dbClient);

}

});

} else {

// 第二次之后直接返回dbClient

resolve(this.dbClient);

}

});

}

/**

* 查詢數據庫

* 使用方法: let result = await DB.find('user',{});

* @param {String} collectionName 集合名稱、數據表名

* @param {Object} json 查詢的條件

*/

find(collectionName, json) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

// 操作db庫里的某一個表,返回符合條件的內容,json查找的條件

let result = db.collection(collectionName).find(json);

result.toArray(function (err, docs) {

if (err) {

reject(err);

return;

}

resolve(docs);

});

});

});

}

/**

* 更新數據庫

* 使用方法: let result = await DB.update('user',{'username':'lisi'},{'username':'李四'});

* @param {String} collectionName 集合名稱、數據表名

* @param {Object} json1 需要更新數據的條件

* @param {Object} json2 新數據的內容

*/

update(collectionName, json1, json2) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

// 操作db庫里的某一個表,更新一條數據,json1查找的內容,json2更新的新內容,回調函數

db.collection(collectionName).updateOne(

json1,

{

$set: json2,

},

(err, result) => {

if (err) {

reject(err);

} else {

resolve(result);

}

}

);

});

});

}

/**

* 插入數據庫

* 使用方法: let result = await DB.insert('user',{'username':'趙六666','age':30,'sex':'女','status':'2'});

* @param {String} collectionName 集合名稱、數據表名

* @param {Object} json 插入的新數據

*/

insert(collectionName, json) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

// 操作db庫里的某一個表,插入一條數據,json插入的新內容,回調函數

db.collection(collectionName).insertOne(json, (err, result) => {

if (err) {

reject(err);

} else {

resolve(result);

}

});

});

});

}

/**

* 批量插入數據庫

* 使用方法: let result = await DB.insert('user',[{'username':'趙六666','age':30,'sex':'女','status':'2'},{'username':'趙六666','age':30,'sex':'女','status':'2'},{'username':'趙六666','age':30,'sex':'女','status':'2'}...]);

* @param {String} collectionName 集合名稱、數據表名

* @param {Array} json 批量插入的新數據

*/

insertMany(collectionName, arr) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

// 操作db庫里的某一個表,批量插入一組數據,arr批量插入的新內容,回調函數

db.collection(collectionName).insertMany(arr, (err, result) => {

if (err) {

reject(err);

} else {

resolve(result);

}

});

});

});

}

/**

* 刪除數據

* 使用方法: let result = await DB.remove('user',{'username':'李四'});

* @param {String} collectionName 集合名稱、數據表名

* @param {Object} json 刪除數據的條件

*/

remove(collectionName, json) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

db.collection(collectionName).removeOne(json, (err, result) => {

if (err) {

reject(err);

} else {

resolve(result);

}

});

});

});

}

/**

* 通過id查詢數據時候需要用到此方法,MongoDB里面查詢_id ,把字符串轉換成對象

* MongoDB數據庫里的_id是自動生成的,通過dind方法查詢結果可以看到形式如: {"_id": ObjectId("5aad299bc166236421c99d229")},直接傳入5aad299bc166236421c99d229,是查詢不到結果的,所以需要包裝一下

* 使用方法: let result = await DB.find('user',{'_id': DB.getObjectID(xxxxx)});

* @param {String} id 要查詢的id

*/

getObjectID(id) {

return new ObjectID(id);

}

}

module.exports = Db.getInstance();

總結

以上是生活随笔為你收集整理的koa mysql mongodb_koa 操作MongoDB数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。