node.js连接MongoDB数据库的2种方法教程


Posted in Javascript onMay 17, 2017

前言

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数据库的2种方法教程

如上图所示,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对象的选项,如下:

node.js连接MongoDB数据库的2种方法教程

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

node.js连接MongoDB数据库的2种方法教程

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

});

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript 实现??打印?理
Apr 28 Javascript
JS 作用域与作用域链详解
Apr 07 Javascript
jquery实现手机号码选号的方法
Jul 31 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
Sep 03 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
Dec 27 Javascript
详细分析单线程JS执行问题
Nov 22 Javascript
10分钟上手vue-cli 3.0 入门介绍
Apr 04 Javascript
vue 使用自定义指令实现表单校验的方法
Aug 28 Javascript
vue使用laydate时间插件的方法
Nov 14 Javascript
基于Node.js搭建hexo博客过程详解
Jun 25 Javascript
layer.alert自定义关闭回调事件的方法
Sep 27 Javascript
jquery实现聊天机器人
Feb 08 jQuery
JavaScript限定范围拖拽及自定义滚动条应用(3)
May 17 #Javascript
Vue.js鼠标悬浮更换图片功能
May 17 #Javascript
12个非常有用的JavaScript技巧
May 17 #Javascript
Javascript中的async awai的用法
May 17 #Javascript
ES6入门教程之Iterator与for...of循环详解
May 17 #Javascript
angular.fromJson与toJson方法用法示例
May 17 #Javascript
Node.js编写CLI的实例详解
May 17 #Javascript
You might like
PHP中使用gettext来支持多语言的方法
2011/05/02 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
js实现表格字段排序
2014/02/19 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
给物业的表扬信
2014/01/21 职场文书
婚礼主持词
2014/03/13 职场文书
个人自荐材料
2014/05/23 职场文书
律政俏佳人观后感
2015/06/09 职场文书
2015年国培研修感言
2015/08/01 职场文书
九年级历史教学反思
2016/02/19 职场文书
思想品德课教学反思
2016/02/24 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS