Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongodb:第一次连接时无法连接到服务器_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js Mongodb:第一次连接时无法连接到服务器

Node.js Mongodb:第一次连接时无法连接到服务器,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我得到以下错误: Warning { MongoError: failed to connect to server [mongodb:27017] on first connect at Pool.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/topologies/server.js:325:35) at emitOne (events.js:96:13)

我得到以下错误:

Warning { MongoError: failed to connect to server [mongodb:27017] on first connect
    at Pool.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/topologies/server.js:325:35)
    at emitOne (events.js:96:13)
    at Pool.emit (events.js:188:7)
    at Connection.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/connection/pool.js:270:12)
    at Connection.g (events.js:292:16)
    at emitTwo (events.js:106:13)
    at Connection.emit (events.js:191:7)
    at Socket.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/connection/connection.js:173:49)
    at Socket.g (events.js:292:16)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at connectErrorNT (net.js:1025:8)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)
  name: 'MongoError',
  message: 'failed to connect to server [mongodb:27017] on first connect' }
看起来有点像有联系

我两个都试过了

$ mongod 

这是我的test_helper.js

const mongoose = require('mongoose');
mongoose.connect('mongodb:localhost/users_test');
mongoose.connection
 .once('open', () => console.log('Good to go!'))
 .on('error', (error) => {
 console.warn('Warning', error);
 });
我没有专门做db“用户测试”,因为我觉得mongoose或mongo或两者都会在运行中进行测试

我试过“localhost”和“127.0.0.1”​". 我在OSX 10.11.5上 我正在运行Node 7.3.0和Mongo 3.2.9

我做错了什么?我如何找出问题所在?

对于
mongodb
,使用
mongoose
,您可以使用:

mongoose.connect('mongodb://localhost/users_test');

但不是
mongoose.connect('mongodb:localhost/users_test');
,它与正确的主机名不匹配(
mongodb
,而不是
localhost

本地mongodb问题解决方案 请按照以下步骤解决此问题:

改变

mongodb://localhost:27017/local


错误消失了

我多次遇到这个问题,下面是一些故障排除列表

  • 确保
    数据库路径
    存在
    ,是
    C:\data\db中windows中的默认路径
  • 确保
    mongo正在运行
    ,要运行它,请转到
    C:\Program Files\MongoDB\Server\3.4\bin
    ,然后运行以下程序:
  • mongod.exe
  • mongo.exe

  • 确保您的
    连接字符串正确
    mongodb://localhost/database-name

  • 对我来说,问题是mongo没有运行。所以首先我在控制台中启动了“mongod”命令。然后在另一个控制台选项卡中运行了“mongo”。现在连接成功了。
    现在运行你的应用程序,你的问题应该得到解决。

    我在PowerShell实例中运行mongod。我在PowerShell控制台中没有从mongod获得任何输出。我单击了mongod运行的PowerShell实例,点击enter并恢复执行。我不确定是什么原因导致执行停止,但我可以连接到此insta立即关闭mongo。

    连接到wifi网络时,
    mongodb://localhost/db_name
    按预期工作

    当我没有连接到任何wifi网络时,这无法工作。相反,我使用,
    mongodb://127.0.0.1/db_name
    ,它成功了


    可能与ip配置有关。

    我在尝试连接mlab db时遇到了相同的错误,这是因为我的组织网络有一些限制,我切换到了移动热点,它工作了。

    我尝试将mlab连接到我的公司wifi连接,它给出了此错误。但当我切换到persona时l网络已工作并已连接。

    如果mongo实例是在cloud.mongodb.com上构建的,则当实例只能从配置实例时IP白名单池中设置的已知IP地址工作时,会出现此错误

    因此,需要从mongo仪表板设置左侧网络访问菜单的IP白名单上的当前IP地址

    比尔

    添加另一个答案,因为解决方案来自不同的上下文:

    MongoDb Atlas问题解决方案 我通过以下步骤连接到MongoDB Atlas并将我机器的IP列入白名单:

    • 转到“安全”选项卡

    • 转到“安全”选项卡下的“网络访问”选项卡

    • 转到IP白名单选项卡

    • 进入


    如果是群集MongoDB,则需要将当前IP添加到群集,要添加当前IP地址,需要完成以下几个步骤-

    step 1- go to login page of Mongodb and login with valid credential - https://cloud.mongodb.com/user#/atlas/login
    step 2- CLick Network Access from left sidebar under Security Section
    Step 3 - Click Add IP Address
    Step 4 - Click Add Current IP Address or Allow Connection From Any Where
    now try to connect - npm start
    

    对于本地MongoDB,使用mongo字符串 “mongodb+srv://username:pass%40ord@clastername blqnk.mongodb.net/test?retryWrites=true&w=多数”


    密码必须像示例字符串一样进行编码。

    我连接到一个VPN,它工作了。我正在使用学校的WiFi。

    如果云中有远程数据库,如ATLAS,您应该创建白名单条目0.0.0.0/0。这允许您从任何IP地址访问群集ATLAS


    我尝试了上述所有方法

    • 允许从任何数据库访问
    • 已验证连接字符串的正确凭据
    • 创建了另一个用户
    这些都不适合我

    最后,我创建了一个新的DB并切换到它。一切都很好。
    幸运的是,它不是那么重要的DB(出于自我教育的目的),所以损害并没有那么大。

    除了配置问题之外,可能还有两个简单的原因

  • 如果您已连接到组织/机构的VPN,则可能存在连接限制
  • 您不是从白名单上的“IP”连接
  • 要添加白名单上的IP,请登录MongoDB Atlas,进入安全->网络访问->添加IP地址


    然后将您当前的IP添加到“访问列表条目”字段Mongodb默认端口为27017。我想您有一个小问题typo@BertrandMartel谢谢你强调了这一点。我不确定我是如何漏掉你的评论的。请使用命令ipconfig/ifconfig检查你系统的IP地址。如果它使用相同的IP地址,请检查nodejs控制台错误与mongodb建立连接的地址。mongodb://localhost/database-name 不mongdb://localhost/database-nameThis 这可能是一个鲜为人知的答案,但它救了我。谢谢这也救了我,thx mate。有趣的是,我的组织网络阻止了mongodb,但没有阻止PostgreSqlThank!尝试使用library hotspot访问我的,但没有成功king。你的解决方案可能适合你个人,但它并不能证明一个通用的解决方案,因为问题海报很可能不能简单地做你所做的事情。答案包含了前面答案中已经包含的解决方案。
    mongoose.connect('localhost/users_test');
    
    mongoose.connect('localhost','users_test');
    
    mongodb://localhost:27017/local
    
    localhost/local
    
    step 1- go to login page of Mongodb and login with valid credential - https://cloud.mongodb.com/user#/atlas/login
    step 2- CLick Network Access from left sidebar under Security Section
    Step 3 - Click Add IP Address
    Step 4 - Click Add Current IP Address or Allow Connection From Any Where
    now try to connect - npm start