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 相关文章推荐
js 设置选中行的样式的实现代码
May 24 Javascript
理解Javascript_07_理解instanceof实现原理
Oct 15 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
Jun 28 Javascript
页面载入结束自动调用js函数示例
Sep 23 Javascript
简单介绍JavaScript的变量和数据类型
Jun 03 Javascript
简单实现js间歇或无缝滚动效果
Jun 29 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
最通俗易懂的javascript变量提升详解
Aug 05 Javascript
详细分析JS函数去抖和节流
Dec 05 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
vue实现lodop打印功能的示例
Nov 11 Javascript
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的加密方式及原理
2012/06/14 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python pass详细介绍及实例代码
2016/11/24 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
用python生成1000个txt文件的方法
2018/10/25 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
建筑工程专业学生的自我评价
2013/12/25 职场文书
毕业生自荐书模版
2014/01/04 职场文书
高中同学聚会邀请函
2014/01/11 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL