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

Mic*_*msø 27 mongoose mongodb node.js

我收到以下错误:

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' }
Run Code Online (Sandbox Code Playgroud)

即使我在运行Mongo的终端窗口中得到这个:

2016-12-25T03:45:23.715+0100 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58868 #8 (8 connections now open) 
Run Code Online (Sandbox Code Playgroud)

它看起来有点连接..

我试过了两个

$ mongod 
Run Code Online (Sandbox Code Playgroud)

$ brew services start mongo 
Run Code Online (Sandbox Code Playgroud)

这是我的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);
 });
Run Code Online (Sandbox Code Playgroud)

我没有专门制作数据库"users_test",因为我认为mongoose或mongo或两者都会动态执行此操作.

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

我究竟做错了什么?我怎么弄清楚什么是错的?

Ber*_*tel 22

要连接mongodb使用mongoose,你可以使用:

mongoose.connect('mongodb://localhost/users_test');
Run Code Online (Sandbox Code Playgroud)

要么

mongoose.connect('localhost/users_test');
Run Code Online (Sandbox Code Playgroud)

要么

mongoose.connect('localhost','users_test');
Run Code Online (Sandbox Code Playgroud)

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


Bas*_*ANI 8

我遇到了这个问题serval次,这里有一些 troubleshooting list

  1. 确保database pathexist,Windows中的默认路径C:\data\db
  2. 确保mongo is running运行它去C:\Program Files\MongoDB\Server\3.4\bin运行以下内容:
    1. mongod.exe
    2. mongo.exe
  3. 确保你的connection string is correct喜欢mongdb://localhost/database-name

  • mongodb:// localhost/database-name not mongdb:// localhost/database-name (3认同)

xam*_*mir 8

由于解决方案来自不同的上下文,因此又添加了一个答案:

MongoDb Atlas问题解决方案

我连接到MongoDB Atlas,并按照以下步骤将机器的IP列入了白名单:

  • 转到安全标签

安全标签

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

安全选项卡下的网络访问选项卡

  • 转到“ IP白名单”标签

IP白名单标签



小智 6

尝试连接mlab db时,我遇到了同样的错误,这是因为我的组织网络受到一些限制,我切换到了移动热点,并且它可以正常工作。

  • 这可能是一个鲜为人知的答案,但它救了我。谢谢 (2认同)

小智 6

如果是集群 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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

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