node.js中使用連接MongoDB數據庫的方法

在node中使用mongogb數據庫

首先要安裝mongodb模塊:

npm install mongodb

連接MongoDB有兩種方法:

  1. 通過實例化mongodb模塊中提供的MongoClient類,然後使用這個實例化的對象來創建和管理mongodb連接;
  2. 使用字符串進行連接;

一、使用MongoClient

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

創建MongoClient對象實例的語法:

var client= new MongoClient(new Server('localhost',27017,{...},{...}));

參數解釋:

  • localhost: 主機名
  • 27017: 默認連接端口號
  • 第一個{…}: Server對象配置
  • 第二個{…}: 數據庫連接選項配置

可以看到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()。

寫入關注

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

來創建MongoClient連接的Server對象的選項,如下:
這裏寫圖片描述
用來創建MongoClient連接的數據庫連接選項,如下:
這裏寫圖片描述

二、使用連接字符串

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

MongoClient.connect(connString, options, callback)

connString字符串的語法如下:

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

MongoClient連接字符串組件:
MongoClient連接字符串組件

舉個栗子:

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('連接已經關閉!');
                            });
                        }

});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章