欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年05月17日 14:17:53   作者:Dragon_GL  
這幾天一直在學(xué)習(xí)mongdb的基礎(chǔ)知識(shí),跟著網(wǎng)上大神的腳步(代碼)去模擬連接mongodb數(shù)據(jù)庫(kù),下面這篇文章就給大家總結(jié)介紹了node.js連接MongoDB數(shù)據(jù)庫(kù)的2種方法教程,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。

前言

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ù)我們有兩種方法可選擇:

  • 通過實(shí)例化mongodb模塊中提供的mongodbClient類,然后使用這個(gè)實(shí)例化的對(duì)象來創(chuàng)建和管理mongodb連接;
  • 使用字符串進(jìn)行連接;

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

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

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

MongoClient( server, options );

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

如上圖所示,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
          }));

// 打開對(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)證通過');
     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() 。

寫入關(guān)注

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

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

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

用來創(chuàng)建MongoClient連接的數(shù)據(jù)庫(kù)連接選項(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í)使用的用戶名??蛇x
password 身份驗(yàn)證時(shí)使用的密碼??蛇x
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ù)庫(kù)的名字。 默認(rèn)為admin
options 連接時(shí)所使用的選項(xiàng)的鍵值對(duì)??梢栽赿bOpt和serverOpt參數(shù)上指定這些選項(xiàng)

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

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ù)庫(kù)
       db.logout(function(err, result) {
        if ( err ) {
         console.log('注銷失敗...');
        }

        db.close(); // 關(guān)閉連接
        console.log('連接已經(jīng)關(guān)閉!');
       });
      }

});

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 一文秒懂nodejs中的異步編程

    一文秒懂nodejs中的異步編程

    這篇文章主要介紹了深入理解nodejs中的異步編程,本文給大家介紹的非常想詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 利用nodejs讀取圖片并將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成base64格式

    利用nodejs讀取圖片并將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成base64格式

    這篇文章主要介紹了利用nodejs讀取圖片并將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成base64格式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Node.js編程中客戶端Session的使用詳解

    Node.js編程中客戶端Session的使用詳解

    這篇文章主要介紹了Node.js編程中客戶端Session的使用詳解,是Node.js入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-06-06
  • NodeJs Express中間件使用流程解析

    NodeJs Express中間件使用流程解析

    Express中間件本質(zhì)上就是一個(gè)function處理函數(shù),多個(gè)中間件之間,共享同一份req和res,我們就可以在上游的中間件中統(tǒng)一為req或者res對(duì)象添加自定義的屬性或方法,供下游的中間件或路由進(jìn)行使用,非常方便
    2023-01-01
  • Node.js系列之發(fā)起get/post請(qǐng)求(2)

    Node.js系列之發(fā)起get/post請(qǐng)求(2)

    這篇文章主要為大家詳細(xì)介紹了Node.js系列之發(fā)起get/post請(qǐng)求,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Node.js + express實(shí)現(xiàn)上傳大文件的方法分析【圖片、文本文件】

    Node.js + express實(shí)現(xiàn)上傳大文件的方法分析【圖片、文本文件】

    這篇文章主要介紹了Node.js + express實(shí)現(xiàn)上傳大文件的方法,結(jié)合實(shí)例形式分析了Node.js + express針對(duì)圖片、文本文件上傳操作實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • 利用node.js實(shí)現(xiàn)反向代理的方法詳解

    利用node.js實(shí)現(xiàn)反向代理的方法詳解

    在實(shí)際工程開發(fā)中,會(huì)有前后端分離的需求。為了平滑的完成前端請(qǐng)求到后端各個(gè)獨(dú)立服務(wù),需要一個(gè)中間件實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)的功能,利用Nginx可以實(shí)現(xiàn),在這里使用nodejs實(shí)現(xiàn)一個(gè)反向代理服務(wù)器。本文主要介紹了關(guān)于利用node.js實(shí)現(xiàn)反向代理的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • Node.js實(shí)現(xiàn)數(shù)據(jù)推送

    Node.js實(shí)現(xiàn)數(shù)據(jù)推送

    這篇文章主要為大家詳細(xì)介紹了Node.js實(shí)現(xiàn)數(shù)據(jù)推送的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 簡(jiǎn)單談?wù)刵ode.js 版本控制 nvm和 n

    簡(jiǎn)單談?wù)刵ode.js 版本控制 nvm和 n

    大量開發(fā)者的貢獻(xiàn)使Node版本的迭代速度很快,版本很多(橫跨0.6到0.11),所以升級(jí)Node版本就成為了一個(gè)問題。目前有n和nvm這兩個(gè)工具可以對(duì)Node進(jìn)行無痛升級(jí),本文簡(jiǎn)單介紹一下二者的使用。
    2015-10-10
  • Nodejs中crypto模塊的安全知識(shí)講解

    Nodejs中crypto模塊的安全知識(shí)講解

    本篇文章給大家詳細(xì)介紹了Nodejs中crypto模塊的安全知識(shí)的相關(guān)內(nèi)容,需要的朋友跟著小編一下學(xué)習(xí)參考下吧。
    2018-01-01

最新評(píng)論