技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁(yè) > 教程 > 服務(wù)器類 >

node.js連接MongoDB數(shù)據(jù)庫(kù)的方法

來(lái)源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2017-10-25 18:26┆點(diǎn)擊:

MongoDB Node.js驅(qū)動(dòng)程序是被官方所支持的原生node.js驅(qū)動(dòng)程序,他是至今為止最好的實(shí)現(xiàn), 并且得到了MongoDB官方的支持。MongoDB團(tuán)隊(duì)已經(jīng)采用MongoDB Node.js驅(qū)動(dòng)程序作為標(biāo)準(zhǔn)方法。

npm install mongodb@1.4.3 // MongoDB Node.js驅(qū)動(dòng)程序 npm install mongoose@3.8.8 //mongoose模塊

要從Node.js連接MongoDB數(shù)據(jù)庫(kù)我們有兩種方法可選擇:

通過(guò)實(shí)例化mongodb模塊中提供的mongodbClient類,然后使用這個(gè)實(shí)例化的對(duì)象來(lái)創(chuàng)建和管理mongodb連接;

使用字符串進(jìn)行連接;

1、通過(guò)client對(duì)象連接到MongoDB

通過(guò)實(shí)例化一個(gè)MongoClient對(duì)象連接MongoDB數(shù)據(jù)庫(kù)是最常用也是最佳的方式。

創(chuàng)建MongoClient對(duì)象實(shí)例的語(yǔ)法:

MongoClient( server, options );

server : 一個(gè)serverd對(duì)象;
options : 數(shù)據(jù)庫(kù)連接選項(xiàng);

node.js連接MongoDB數(shù)據(jù)庫(kù)的方法 三聯(lián)

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

下面,看一個(gè)示例:

var MongoClient = require('mongodb').MongoClient, Server = require('mongodb').server; // 創(chuàng)建客戶端連接對(duì)象 var client = new MongoClient( new Server('localhost', 27017, { socketOpations: { connectTimeoutMS: 500 }, poolSize: 5, auto_reconnect: true }, { numberOfRetries: 3, retryMilliSeconds: 500 })); // 打開(kāi)對(duì)服務(wù)器端MongoDB數(shù)據(jù)庫(kù)的連接 client.open(function(err, client) { if ( err ) { console.log('連接失??!'); } else { var db = client.db('blogdb'); // 建立到數(shù)據(jù)庫(kù)blogdb的連接 if ( db ) { console.log('連接成功'); db.authenticate('username', 'pwd', function(err, result) { // 對(duì)用戶數(shù)據(jù)庫(kù)身份進(jìn)行驗(yàn)證 if ( err ) { console.log('數(shù)據(jù)庫(kù)用戶身份驗(yàn)證失敗'); client.close(); // 關(guān)閉對(duì)MongoDB的連接 console.log('連接已關(guān)閉......'); } else { console.log('用戶身份驗(yàn)證通過(guò)'); db.logout(function (err, result) { // 關(guān)閉對(duì)數(shù)據(jù)庫(kù)的連接,即退出數(shù)據(jù)庫(kù) if ( !err ) { console.log('退出數(shù)據(jù)庫(kù)出錯(cuò)'); } client.close(); // 關(guān)閉對(duì)MongoDB的連接 console.log( '已關(guān)閉連接......' ); }); } }); } } });

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

寫(xiě)入關(guān)注

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

寫(xiě) 入 級(jí) 別 說(shuō) 明
-1   網(wǎng)絡(luò)錯(cuò)誤被忽略  
0   寫(xiě)確認(rèn)是不必要的  
1   請(qǐng)求寫(xiě)確認(rèn)  
2   寫(xiě)確認(rèn)請(qǐng)求跨主服務(wù)器和副本集中的一個(gè)輔助服務(wù)器  
majority   寫(xiě)確認(rèn)是從副本集的主服務(wù)器請(qǐng)求的  

用來(lái)創(chuàng)建MongoClient連接的Server對(duì)象的選項(xiàng),如下:

node.js連接MongoDB數(shù)據(jù)庫(kù)的方法

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

node.js連接MongoDB數(shù)據(jù)庫(kù)的方法

2、通過(guò)一個(gè)連接字符串連接到MongoDB

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

MongoClient.connect(connString, options, callback)

connString字符串的語(yǔ)法如下:

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

MongoClient連接字符串組件:

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

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