今天就跟大家聊聊有關(guān)node.js中怎么連接MongoDB數(shù)據(jù)庫,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站建設(shè)、做網(wǎng)站與策劃設(shè)計(jì),定州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:定州等地區(qū)。定州做網(wǎng)站價(jià)格咨詢:18982081108
1、通過client對象連接到MongoDB
通過實(shí)例化一個(gè)MongoClient對象連接MongoDB數(shù)據(jù)庫是最常用也是最佳的方式。
創(chuàng)建MongoClient對象實(shí)例的語法:
MongoClient( server, options );
server : 一個(gè)serverd對象;
options : 數(shù)據(jù)庫連接選項(xiàng);

如上圖所示,MongoClient連接利用了后臺的Server對象。這個(gè)對象的功能就是定義了MongoDB驅(qū)動程序怎么連接到服務(wù)器。
下面,看一個(gè)示例:
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ù)庫身份進(jìn)行驗(yàn)證
if ( err ) {
console.log('數(shù)據(jù)庫用戶身份驗(yàn)證失敗');
client.close(); // 關(guān)閉對MongoDB的連接
console.log('連接已關(guān)閉......');
} else {
console.log('用戶身份驗(yàn)證通過');
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ù)庫的時(shí)候會用到一個(gè)關(guān)于寫入關(guān)注級別的問題,說白了,個(gè)人理解的話就是相當(dāng)于出現(xiàn)問題的一個(gè)處理優(yōu)先順序,你可以選擇寫入數(shù)據(jù)庫之前是否需要你確認(rèn)之類的,或者發(fā)生錯誤是否忽略之類的等等,如下圖:
| 寫 入 級 別 | 說 明 |
|---|---|
| -1 | 網(wǎng)絡(luò)錯誤被忽略 |
| 0 | 寫確認(rèn)是不必要的 |
| 1 | 請求寫確認(rèn) |
| 2 | 寫確認(rèn)請求跨主服務(wù)器和副本集中的一個(gè)輔助服務(wù)器 |
| majority | 寫確認(rèn)是從副本集的主服務(wù)器請求的 |
用來創(chuàng)建MongoClient連接的Server對象的選項(xiàng),如下:

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

2、通過一個(gè)連接字符串連接到MongoDB
這種方式要調(diào)用MongoClient類的connect( )方法。connect使用語法如下:
MongoClient.connect(connString, options, callback)
connString字符串的語法如下:
mongodb://username:password@host:port/database?opations
MongoClient連接字符串組件:
| 選 項(xiàng) | 說 明 |
|---|---|
| mongodb:// | 指定字符串使用mongodb的連接格式 |
| username | 驗(yàn)證時(shí)使用的用戶名。可選 |
| password | 身份驗(yàn)證時(shí)使用的密碼。可選 |
| host | MongoDB服務(wù)器主機(jī)名或者域名。它可以是多個(gè)host:port組合來連接多個(gè)MongoDB服務(wù)器。 例如:mongodb://host1:270017, host2://270017, host3:270017/testDB |
| port | 連接MongoDB服務(wù)器時(shí)使用的端口。默認(rèn)值是27017 |
| database | 要連接的數(shù)據(jù)庫的名字。 默認(rèn)為admin |
| options | 連接時(shí)所使用的選項(xiàng)的鍵值對。可以在dbOpt和serverOpt參數(shù)上指定這些選項(xiàng) |
下面,看一個(gè)使用連接字符串方法連接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ù)庫有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
分享標(biāo)題:node.js中怎么連接MongoDB數(shù)據(jù)庫
文章網(wǎng)址:http://chinadenli.net/article34/gphese.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、手機(jī)網(wǎng)站建設(shè)、Google、軟件開發(fā)、企業(yè)網(wǎng)站制作、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)