溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mongodb關(guān)閉數(shù)據(jù)庫連接的方法

發(fā)布時(shí)間:2020-07-10 14:32:05 來源:億速云 閱讀:409 作者:清晨 欄目:編程語言

不懂mongodb關(guān)閉數(shù)據(jù)庫連接的方法?其實(shí)想解決這個(gè)問題也不難,下面讓小編帶著大家一起學(xué)習(xí)怎么去解決,希望大家閱讀完這篇文章后大所收獲。

mongodb連接數(shù)據(jù)庫關(guān)閉數(shù)據(jù)庫連接的方法:

1、首先我們需要 在包中安裝 mongodb, 使用命令: npm install mongodb; 在安裝包后,我們需要引用該包;如下:

var mongo = require('mongodb');

在Node.js中,當(dāng)需要連接Mongodb數(shù)據(jù)庫時(shí),首先需要?jiǎng)?chuàng)建一個(gè)Mongodb數(shù)據(jù)庫所在服務(wù)器的Server對(duì)象,作用是指定需要連接的MongoDB數(shù)據(jù)庫所在的服務(wù)器。

2、創(chuàng)建Server對(duì)象,如下命令:

var server = new mongo.Server(host, port, [options]);

參數(shù)host: 是指定服務(wù)器所在的地址;
參數(shù)port:是指定服務(wù)器的端口號(hào)。
options參數(shù)值是一個(gè)對(duì)象,用于指定服務(wù)器需要選用的一些選項(xiàng),具體的包含哪些對(duì)象可以自己百度下;這邊介紹一下最常用的參數(shù);

auto_reconnect: 該屬性為布爾值,當(dāng)屬性值為true時(shí),在客戶端與服務(wù)器連接過程中發(fā)生錯(cuò)誤時(shí)自動(dòng)重建連接,默認(rèn)為false。

3、創(chuàng)建數(shù)據(jù)庫為DB對(duì)象;

在MongoDB服務(wù)器對(duì)象創(chuàng)建成功后,需要?jiǎng)?chuàng)建一個(gè)代表MongoDB數(shù)據(jù)庫的DB對(duì)象,創(chuàng)建方法如下:

var db = new mongo.Db(databaseName, server, [options]);

databaseName: 該參數(shù)是必須的,用于指定需要連接的數(shù)據(jù)庫名;
server: 用于指定該數(shù)據(jù)庫所在的服務(wù)器。
options為一個(gè)對(duì)象,參數(shù)可選的,具體的參數(shù)自己百度,這邊介紹一些常用的參數(shù)。

safe: 是一個(gè)布爾值,當(dāng)屬性值為true時(shí),使用getLastError命令執(zhí)行數(shù)據(jù)的存取操作,該命令返回存取操作的執(zhí)行結(jié)果,默認(rèn)為false;

4、數(shù)據(jù)庫連接

在Db對(duì)象創(chuàng)建后,需要使用對(duì)象的open方法執(zhí)行數(shù)據(jù)庫的鏈接操作,該方法使用如下所示:

db.open(callback);

callback 是一個(gè)回調(diào)函數(shù),用于指定執(zhí)行數(shù)據(jù)庫連接操作后返回的回調(diào)函數(shù),回調(diào)函數(shù)指定方法如下:

function(err, db) {
  
}

在該回調(diào)函數(shù)中,使用二個(gè)參數(shù),第一個(gè)參數(shù)為鏈接數(shù)據(jù)庫失敗時(shí)拋出的錯(cuò)誤對(duì)象,第二個(gè)參數(shù)為一個(gè)Db對(duì)象,代表鏈接成功的數(shù)據(jù)庫,當(dāng)數(shù)據(jù)庫連接失敗時(shí),該參數(shù)值為null;

5、關(guān)閉數(shù)據(jù)庫

當(dāng)一個(gè)數(shù)據(jù)庫不再需要使用時(shí)候,可以使用數(shù)據(jù)庫對(duì)象的close方法關(guān)閉數(shù)據(jù)庫,該方法如下所示:

db.close([forceClose], [callback]);

forceClose 參數(shù)值為一個(gè)布爾值,當(dāng)該參數(shù)值為true時(shí),強(qiáng)制關(guān)閉該數(shù)據(jù)庫,關(guān)閉數(shù)據(jù)庫后,不可再使用open方法打開該數(shù)據(jù)庫。
當(dāng)參數(shù)值為false,不強(qiáng)制關(guān)閉該數(shù)據(jù)庫,可以使用該數(shù)據(jù)庫對(duì)象的open方法打開該數(shù)據(jù)庫。

callback 為一個(gè)函數(shù),用于指定關(guān)閉數(shù)據(jù)庫連接操作后返回的回調(diào)函數(shù)。該回調(diào)函數(shù)指定如下所示:

function (err) {}

該回調(diào)函數(shù)有一個(gè)參數(shù)值,表示的是為鏈接數(shù)據(jù)庫失敗時(shí)拋出的錯(cuò)誤對(duì)象。

6、監(jiān)聽數(shù)據(jù)庫的close事件

當(dāng)數(shù)據(jù)庫關(guān)閉時(shí),觸發(fā)數(shù)據(jù)庫的對(duì)象的close事件,可以通過監(jiān)聽數(shù)據(jù)庫對(duì)象的close事件并指定回調(diào)函數(shù)的方法指定當(dāng)關(guān)閉數(shù)據(jù)庫操作執(zhí)行結(jié)束時(shí)需要執(zhí)行的處理,如下代碼:

function(err, db) {}

該回調(diào)有2個(gè)參數(shù),第一個(gè)參數(shù)為關(guān)閉數(shù)據(jù)庫失敗時(shí)拋出的錯(cuò)誤對(duì)象,第二個(gè)參數(shù)值為成功關(guān)閉的數(shù)據(jù)庫對(duì)象,當(dāng)關(guān)閉數(shù)據(jù)庫失敗時(shí)該參數(shù)值為null.

下面是鏈接數(shù)據(jù)庫的簡單demo,代碼如下:

package.json 代碼如下:

{
  "name": "mdb",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "mongodb": "^2.2.33"
  }
}

在項(xiàng)目中的根目錄下新建一個(gè) app.js, 代碼如下:

const mongo = require('mongodb');
const Server = mongo.Server;
const Db = mongo.Db;

const server = new Server('localhost', '27017', { auto_reconnect: true });
const db = new Db('dataDb', server, { safe: true });

db.open(function(err, db) {
  if (err) {
    throw err;
  } else {
    console.log('成功建立數(shù)據(jù)庫連接');
    db.close();
  }
});

db.on('close', function(err, db) {
  if (err) {
    throw err;
  } else {
    console.log('成功關(guān)閉數(shù)據(jù)庫連接');
  }
});

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享mongodb關(guān)閉數(shù)據(jù)庫連接的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI