你的位置:首页 > Java教程

[Java教程]NodeJS连接MongoDB数据库时报错


今天第一次尝试连接MongoDB数据库,具体步骤也很简单。

首先,通过NodeJS运行环境安装MongoDB包,进入要安装的目录,执行语句

npm install mongodb

安装成功后,通过如下语句测试与数据库建立连接几关闭数据库

var mongo = require('mongodb');var host = "localhost";var port = mongo.Connection.DEFAULT_PORT;//创建MongoDB数据库所在服务器的Server对象var server = new mongo.Server(host, port, {auto_reconnect:true});//创建MongoDB数据库var db = new mongo.Db('node-mongo-example', server, {saft:true});//数据库连接操作db.open(function(err, db){  if(err) {    console.log('连接数据库发生错误');    throw err;}  else{    console.log("成功建立数据库连接");    db.close();  }});db.on('close',function(err,db){  if (err) {throw err;}  else{    console.log("成功关闭数据库");  }});

在node的运行环境中运行以上代码所在文件,出现如下所示错误:

mongodb数据库的默认端口为27017,所以我把port改成默认的27017,运行文件后,仍然报错,如下所示:

很显然,错误本身不是端口号属性问题,而是无法连接默认的MongoDB数据库服务,最后终于明白造成以上错误的原因是没有运行数据库服务器的可执行文件。

具体启动方法为:

在运行环境中进入MongoDB的安装位置,进入bin文件夹下,运行如下代码:

D:\Mongodb\bin>mongod --dbpath D:\Mongodb\data  

一般情况下,上面的node.js代码就可以正常运行了

但在最初尝试时,我还遇到过一个问题,就是启动上面的数据库服务器时,在无法启动,在反馈信息中有一条错误为:

2015-12-13T00:49:12.195+0600 I STORAGE [initandlisten] exception in initAndListen: 28663 Cannot start server. The default storage engine 'wiredTiger' is not available with this build of mongod. Please specify a different storage engine explicitly, e.g. --storageEngine=mmapv1., terminating 2015-12-13T00:49:12.195+0600 I CONTROL [initandlisten] dbexit: rc: 100

查找资料发现,这是由于版本冲突造成存储路径的混淆,具体解决方案为在bin目录下运行如下语句:

D:\MongoDB\bin mongod --storageEngine=mmapv1 --dbpath [your-path]

再启动数据库服务就成功了。

可以通过访问http:\\localhost:27017,可以看到如下提示:

It looks like you are trying to access MongoDB over HTTP on the native driver port.

就可以启动成功了!

参考资料:http://chenzhou123520.iteye.com/blog/1582174