当前位置:网站首页 > 资讯中心 > IT技术 >
node.js连接MongoDB数据库的方法
发布日期:2017-07-05 所属分类:IT技术
;

 MongoDB Node.js驱动程序是被官方所支持的原生node.js驱动程序,他是至今为止最好的实现, 并且得到了MongoDB官方的支持。MongoDB团队已经采用MongoDB Node.js驱动程序作为标准方法。

npm install mongodb@1.4.3  // MongoDB Node.js驱动程序
npm install mongoose@3.8.8 //mongoose模块

要从Node.js连接MongoDB数据库我们有两种方法可选择:

  • 通过实例化mongodb模块中提供的mongodbClient类,然后使用这个实例化的对象来创建和管理mongodb连接;
  • 使用字符串进行连接;
  • 1、通过client对象连接到MongoDB

    通过实例化一个MongoClient对象连接MongoDB数据库是最常用也是最佳的方式。

    创建MongoClient对象实例的语法:

    MongoClient( server, options );

    server : 一个serverd对象;
    options : 数据库连接选项;

    node.js连接MongoDB数据库的方法 三联

    如上图所示,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()

    写入关注

    首先,我们在连接数据库的时候会用到一个关于写入关注级别的问题,说白了,个人理解的话就是相当于出现问题的一个处理优先顺序,你可以选择写入数据库之前是否需要你确认之类的,或者发生错误是否忽略之类的等等,如下图:

    写 入 级 别 说 明
    -1 网络错误被忽略
    0 写确认是不必要的
    1 请求写确认
    2 写确认请求跨主服务器和副本集中的一个辅助服务器
    majority 写确认是从副本集的主服务器请求的

     

    用来创建MongoClient连接的Server对象的选项,如下:

    用来创建MongoClient连接的数据库连接选项,如下:

    2、通过一个连接字符串连接到MongoDB

    这种方式要调用MongoClient类的connect( )方法。connect使用语法如下:

    MongoClient.connect(connString, options, callback)

    connString字符串的语法如下:

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

    MongoClient连接字符串组件:

    选 项 说 明
    mongodb:// 指定字符串使用mongodb的连接格式
    username 验证时使用的用户名。可选
    password 身份验证时使用的密码。可选
    host MongoDB服务器主机名或者域名。它可以是多个host:port组合来连接多个MongoDB服务器。 例如:mongodb://host1:270017, host2://270017, host3:270017/testDB
    port 连接MongoDB服务器时使用的端口。默认值是27017
    database 要连接的数据库的名字。 默认为admin
    options 连接时所使用的选项的键值对。可以在dbOpt和serverOpt参数上指定这些选项

     

    下面,看一个使用连接字符串方法连接MongoDB数据库的示例:

    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('连接已经关闭!');
           });
          }
    
    });

    本文章地址http://www.vzeo.com/news/xuetang/800773.html 由   友站网 编辑整理,转载请注明出处
    推荐资讯