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

前言

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

rush:bash;"> 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对象实例的语法:

rush:plain;"> MongoClient( server,options );

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

如上图所示,MongoClient连接利用了后台的Server对象。这个对象的功能就是定义了MongoDB驱动程序怎么连接到服务器。

下面,看一个示例:

rush:js;"> 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(); // <a href="https://www.jb51.cc/tag/guanbi/" target="_blank" class="keywords">关闭</a>对MongoDB的连接
  console.log( '已<a href="https://www.jb51.cc/tag/guanbi/" target="_blank" class="keywords">关闭</a>连接......' );
 });
}

});
}
}
});

注意: 要注销数据库,要使用数据库对象上的logout()方法。这将关闭到该数据库上的连接,你不在可以使用Db对象。例如: db.logout();而要关闭到MongoDB的连接,要在客户端连接上调用close()方法,例如: client.close()

写入关注

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

写 入 级 别 说 明 错误被忽略一个辅助服务器

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

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

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

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

rush:js;"> MongoClient.connect(connString,options,callback)

connString字符串的语法如下:

rush:js;"> mongodb://username:password@host:port/database?opations

MongoClient连接字符串组件:

选 项 说 明 用户名。可选默认值是27017数据库的名字。 认为admin

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

rush:js;"> 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: {}
 },db) {
  if ( err ) {
   console.log('连接失败!');
  } else {
   console.log('连接成功!');
   // 注销<a href="https://www.jb51.cc/tag/shujuku/" target="_blank" class="keywords">数据库</a>
   db.<a href="https://www.jb51.cc/tag/logo/" target="_blank" class="keywords">logo</a>ut(function(err,result) {
    if ( err ) {
     console.log('注销失败...');
    }

    db.close(); // <a href="https://www.jb51.cc/tag/guanbi/" target="_blank" class="keywords">关闭</a>连接
    console.log('连接已经<a href="https://www.jb51.cc/tag/guanbi/" target="_blank" class="keywords">关闭</a>!');
   });
  }

});

总结

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

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...