MongoDB Node.js驅(qū)動程序是被官方所支持的原生node.js驅(qū)動程序,他是至今為止最好的實現(xiàn), 并且得到了MongoDB官方的支持。MongoDB團隊已經(jīng)采用MongoDB Node.js驅(qū)動程序作為標準方法。
npm install mongodb@1.4.3 // MongoDB Node.js驅(qū)動程序 npm install mongoose@3.8.8 //mongoose模塊
要從Node.js連接MongoDB數(shù)據(jù)庫我們有兩種方法可選擇:
通過實例化mongodb模塊中提供的mongodbClient類,然后使用這個實例化的對象來創(chuàng)建和管理mongodb連接;
使用字符串進行連接;
1、通過client對象連接到MongoDB
通過實例化一個MongoClient對象連接MongoDB數(shù)據(jù)庫是最常用也是最佳的方式。
創(chuàng)建MongoClient對象實例的語法:
MongoClient( server, options );
server : 一個serverd對象;
options : 數(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('連接失?。?); } 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ā)生錯誤是否忽略之類的等等,如下圖:
寫 入 級 別 說 明用來創(chuàng)建MongoClient連接的Server對象的選項,如下:
用來創(chuàng)建MongoClient連接的數(shù)據(jù)庫連接選項,如下:
2、通過一個連接字符串連接到MongoDB
這種方式要調(diào)用MongoClient類的connect( )方法。connect使用語法如下:
MongoClient.connect(connString, options, callback)
connString字符串的語法如下:
mongodb://username:password@host:port/database?opations
MongoClient連接字符串組件:
選 項 說 明下面,看一個使用連接字符串方法連接MongoDB數(shù)據(jù)庫的示例: