首頁 > web前端 > js教程 > 主體

關於node.js連接MongoDB資料庫的2種方法

不言
發布: 2018-06-30 13:57:50
原創
1365 人瀏覽過

這幾天一直在學習mongdb的基礎知識,跟著網上大神的腳步(代碼)去模擬連接mongodb數據庫,下面這篇文章就給大家總結介紹了node.js連接MongoDB數據庫的2種方法教程,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

MongoDB Node.js驅動程式是被官方支援的原生node.js驅動程序,他是至今為止最好的實現, 並且得到了MongoDB官方的支持。 MongoDB團隊已經採用MongoDB Node.js驅動程式作為標準方法。

npm install mongodb@1.4.3  // MongoDB Node.js驱动程序
npm install mongoose@3.8.8 //mongoose模块
登入後複製

要從Node.js連接MongoDB資料庫我們有兩個方法可以選擇:

  • 透過實例化mongodb模組中提供的mongodbClient類,然後使用這個實例化的物件來建立和管理mongodb連接;

  • 使用字串進行連接;

1、透過client物件連接到MongoDB

透過實例化一個MongoClient物件連接MongoDB資料庫是最常用也是最佳的方式。

建立MongoClient物件實例的語法:

MongoClient( server, options );
登入後複製

server : 一個serverd物件;
options : 資料庫連線選項;

如上圖所示,MongoClient連線利用了背景的Server物件。這個物件的功能就是定義了MongoDB驅動程式怎麼連接到伺服器。

下面,看一個範例:

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

// 创建客户端连接对象
var client = new MongoClient( new Server('localhost', 27017, {
           socketOpations: { connectTimeoutMS: 500 },
           poolSize: 5,
           auto_reconnect: true
          }, {
           numberOfRetries: 3,
           retryMilliSeconds: 500
          }));

// 打开对服务器端MongoDB数据库的连接
client.open(function(err, client) {
 if ( err ) {
  console.log('连接失败!');
 } else {
  var db = client.db('blogdb'); // 建立到数据库blogdb的连接
  if ( db ) {
   console.log('连接成功');
   db.authenticate('username', 'pwd', function(err, result) { // 对用户数据库身份进行验证
    if ( err ) {
     console.log('数据库用户身份验证失败');
     client.close(); // 关闭对MongoDB的连接
     console.log('连接已关闭......');
    } else {
     console.log('用户身份验证通过');
     db.logout(function (err, result) { // 关闭对数据库的连接,即退出数据库
      if ( !err ) {
       console.log('退出数据库出错');
      }

      client.close(); // 关闭对MongoDB的连接
      console.log( '已关闭连接......' );
     });
    }
   });
  }
 }
});
登入後複製

要登出資料庫,要使用資料庫物件上的logout()方法。這將關閉到該資料庫上的連接,你不在可以使用Db物件。例如: db.logout();而要關閉到MongoDB的連接,要在客戶端連接上調用close()方法,例如: client.close()

寫入關注

首先,我們在連接資料庫的時候會用到一個關於寫入關注層級的問題,說白了,個人理解的話就是相當於出現問題的一個處理優先順序,你可以選擇寫入資料庫之前是否需要你確認之類的,或者發生錯誤是否忽略之類的等等,如下圖:

寫入層級說明
-1網路錯誤被忽略
#0寫入確認是不必要的
1#請求寫入確認
2寫入確認請求跨主伺服器和副本集中的一個輔助伺服器
#majority寫入確認是從副本集的主伺服器請求的

用來建立MongoClient連接的Server物件的選項,如下:

##用來建立MongoClient連接的資料庫連接選項,如下:

#2、透過一個連接字串連接到MongoDB

這種方式要呼叫MongoClient類別的

connect( )方法。 connect使用語法如下:

MongoClient.connect(connString, options, callback)
登入後複製

connString字串的語法如下:

##
mongodb://username:password@host:port/database?opations
登入後複製

#MongoClient連接字串元件:

#選項#mongodb://usernamepasswordhostportdatabaseoptions

下面,看一个使用连接字符串方法连接MongoDB数据库的示例:

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('连接成功!');
       // 注销数据库
       db.logout(function(err, result) {
        if ( err ) {
         console.log('注销失败...');
        }

        db.close(); // 关闭连接
        console.log('连接已经关闭!');
       });
      }

});
登入後複製

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

使用Nodejs连接mongodb数据库的实现

node-mysql中防止SQL注入的方法

以上是關於node.js連接MongoDB資料庫的2種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
說明
指定字串使用mongodb的連線格式
驗證時所使用的使用者名稱.可選
身份驗證時使用的密碼。可選
MongoDB伺服器主機名稱或網域名稱。它可以是多個host:port組合來連接多個MongoDB伺服器。例如:mongodb://host1:270017, host2://270017, host3:270017/testDB
#連接MongoDB伺服器時所使用的連接埠。預設值是27017
要連接的資料庫的名字。預設為admin
連接時所使用的選項的鍵值對。可以在dbOpt和serverOpt參數上指定這些選項