溫馨提示×

溫馨提示×

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

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

node.js中怎么連接MongoDB數(shù)據(jù)庫

發(fā)布時間:2021-07-16 16:19:48 來源:億速云 閱讀:184 作者:Leah 欄目:web開發(fā)

今天就跟大家聊聊有關(guān)node.js中怎么連接MongoDB數(shù)據(jù)庫,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。


1、通過client對象連接到MongoDB

通過實例化一個MongoClient對象連接MongoDB數(shù)據(jù)庫是最常用也是最佳的方式。

創(chuàng)建MongoClient對象實例的語法:

MongoClient( server, options );

server : 一個serverd對象;
options : 數(shù)據(jù)庫連接選項;

node.js中怎么連接MongoDB數(shù)據(jù)庫

如上圖所示,MongoClient連接利用了后臺的Server對象。這個對象的功能就是定義了MongoDB驅(qū)動程序怎么連接到服務(wù)器。

下面,看一個示例:

var MongoClient = require('mongodb').MongoClient, 
 Server  = require('mongodb').server;

// 創(chuàng)建客戶端連接對象
var client = new MongoClient( new Server('localhost', 27017, {
           socketOpations: { connectTimeoutMS: 500 },
           poolSize: 5,
           auto_reconnect: true
          }, {
           numberOfRetries: 3,
           retryMilliSeconds: 500
          }));

// 打開對服務(wù)器端MongoDB數(shù)據(jù)庫的連接
client.open(function(err, client) {
 if ( err ) {
  console.log('連接失?。?#39;);
 } else {
  var db = client.db('blogdb'); // 建立到數(shù)據(jù)庫blogdb的連接
  if ( db ) {
   console.log('連接成功');
   db.authenticate('username', 'pwd', function(err, result) { // 對用戶數(shù)據(jù)庫身份進行驗證
    if ( err ) {
     console.log('數(shù)據(jù)庫用戶身份驗證失敗');
     client.close(); // 關(guān)閉對MongoDB的連接
     console.log('連接已關(guān)閉......');
    } else {
     console.log('用戶身份驗證通過');
     db.logout(function (err, result) { // 關(guān)閉對數(shù)據(jù)庫的連接,即退出數(shù)據(jù)庫
      if ( !err ) {
       console.log('退出數(shù)據(jù)庫出錯');
      }

      client.close(); // 關(guān)閉對MongoDB的連接
      console.log( '已關(guān)閉連接......' );
     });
    }
   });
  }
 }
});

注意: 要注銷數(shù)據(jù)庫,要使用數(shù)據(jù)庫對象上的logout()方法。這將關(guān)閉到該數(shù)據(jù)庫上的連接,你不在可以使用Db對象。例如: db.logout();而要關(guān)閉到MongoDB的連接,要在客戶端連接上調(diào)用close()方法,例如: client.close() 。

寫入關(guān)注

首先,我們在連接數(shù)據(jù)庫的時候會用到一個關(guān)于寫入關(guān)注級別的問題,說白了,個人理解的話就是相當于出現(xiàn)問題的一個處理優(yōu)先順序,你可以選擇寫入數(shù)據(jù)庫之前是否需要你確認之類的,或者發(fā)生錯誤是否忽略之類的等等,如下圖:

寫 入 級 別說 明
-1網(wǎng)絡(luò)錯誤被忽略
0寫確認是不必要的
1請求寫確認
2寫確認請求跨主服務(wù)器和副本集中的一個輔助服務(wù)器
majority寫確認是從副本集的主服務(wù)器請求的

用來創(chuàng)建MongoClient連接的Server對象的選項,如下:

node.js中怎么連接MongoDB數(shù)據(jù)庫

用來創(chuàng)建MongoClient連接的數(shù)據(jù)庫連接選項,如下:

node.js中怎么連接MongoDB數(shù)據(jù)庫

2、通過一個連接字符串連接到MongoDB

這種方式要調(diào)用MongoClient類的connect( )方法。connect使用語法如下:

MongoClient.connect(connString, options, callback)

connString字符串的語法如下:

mongodb://username:password@host:port/database?opations

MongoClient連接字符串組件:

選 項說 明
mongodb://指定字符串使用mongodb的連接格式
username驗證時使用的用戶名??蛇x
password身份驗證時使用的密碼。可選
hostMongoDB服務(wù)器主機名或者域名。它可以是多個host:port組合來連接多個MongoDB服務(wù)器。 例如:mongodb://host1:270017, host2://270017, host3:270017/testDB
port連接MongoDB服務(wù)器時使用的端口。默認值是27017
database要連接的數(shù)據(jù)庫的名字。 默認為admin
options連接時所使用的選項的鍵值對??梢栽赿bOpt和serverOpt參數(shù)上指定這些選項

下面,看一個使用連接字符串方法連接MongoDB數(shù)據(jù)庫的示例:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://mongodb:test@localhost:27017/blogdb', {
      db: { w: 1, native_parser: false },
      server: {
       poolSize: 5,
       socketOpations: { connectTimeoutMS: 500 },
       auto_reconnect: true
      },
      replSet: {},
      mongos: {}

     }, function(err, db) {
      if ( err ) {
       console.log('連接失??!');
      } else {
       console.log('連接成功!');
       // 注銷數(shù)據(jù)庫
       db.logout(function(err, result) {
        if ( err ) {
         console.log('注銷失敗...');
        }

        db.close(); // 關(guān)閉連接
        console.log('連接已經(jīng)關(guān)閉!');
       });
      }

});

看完上述內(nèi)容,你們對node.js中怎么連接MongoDB數(shù)據(jù)庫有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

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

AI