尝试将 node.js 连接至 MongoDB,收到了成功的响应但无法建立连接。

14 浏览
0 Comments

尝试将 node.js 连接至 MongoDB,收到了成功的响应但无法建立连接。

我一直在按照在线指导设置使用mongoose在node.js上的mongodb数据库。我成功地将mongodb运行并监听在27017端口上,然而当我在node.js中运行连接代码时,即使mongo.db没有运行,我也能够得到成功的响应,并且我没有看到任何关于mongo.db接收到任何数据的更新。

我尝试了很多不同的互联网示例,但无法使它们中的任何一个工作。

所以我的MongoDB显示:

2019-03-26T12:00:46.039+0000 I NETWORK [initandlisten] waiting for connections on port 27017

这是我试图使其工作的基本代码,因为我的原始API不工作:

//sample.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', function(err){
  if(!err) console.log('成功连接');
  console.log(mongoose.connection.host);
  console.log(mongoose.connection.port);
});

当我运行node sample.js时,我收到这个响应:

成功连接
localhost
27017

但是即使我的mongo.db已经关闭,我仍然收到这个响应,所以我认为存在一些错误,我不确定如何检查它们是否连接正确。

0
0 Comments

尝试连接node.js到mongodb,得到了成功的响应,但没有连接。

我认为您需要检查连接的API。

第二个参数是选项,第三个是回调函数-但您似乎将回调函数作为第二个参数传递-还要检查您得到的响应。

// 使用回调函数
mongoose.connect(uri, options, function(error) {
  // 检查初始连接中的错误。回调函数没有第二个参数。
});
// 或者使用Promise
mongoose.connect(uri, options).then(
  () => { /** 准备使用。mongoose.connect()的Promise解析为undefined。 */ },
  err => { /** 处理初始连接错误 */ }
);

原因:将回调函数作为第二个参数传递,导致连接失败。

解决方法:将回调函数作为第三个参数传递,或者使用Promise来处理连接。

0
0 Comments

问题原因:代码中缺少了几个括号,导致出现了语法错误。

解决方法:补充缺少的括号即可。

0