【问题标题】:MongoError: failed to connect to server on first connectMongoError:第一次连接时无法连接到服务器
【发布时间】:2017-04-24 23:01:36
【问题描述】:
const express = require('express')
const app = express()   //initialised express. using express by requiring it.
//conecting the server to browsers
const bodyParser = require('body-parser')
const MongoClient = require('mongodb').MongoClient

var db

MongoClient.connect('mongodb://aryan:aryan@ds127938.mlab.com:27938/post-quotes', 
                    (err, database) => {
    console.log('inside')
    //We move app.listen() so that it boots up only when our database is connected; ony aftert that should it flag: listening
    if (err) return console.log(err)

    db = database
    app.listen(process.env.PORT || 3000, function()  {
    console.log('listening on 3000')
})
    db.collection('quotes').find().toArray( (err, results) => {
        console.log(results)
    })
})

app.use(bodyParser.urlencoded({extended: true}))
//enabling body parser to handle formms as in our case




app.get('/', (req, res) => {
    res.sendFile('/media/aryan/Adani/zellwk' + '/index.html')
})  // /index.html specifies that index.html is stored in the root of your project directory.

app.post('/quotes', (req, res) => {
    db.collection('quotes').save(req.body, (err, result) =>{    //creating a mongodb Collection called quotes and usiing .save silmultaneously to save it on the mongodb server
        if (err) return console.log(err)

        console.log("Save Successful")
        res.redirect('/')   // Now what after the user presses submit. We need to show him som echanges. So  redirect him to the starting page. 

    })



})

在日志屏幕中我得到一个错误:

MongoError: 首次连接时无法连接到服务器 [ds047955.mongolab.com:47955]

这是完整的日志:

里面 { MongoError:第一次连接时无法连接到服务器 [ds127938.mlab.com:27938] 在游泳池。 (/media/aryan/Adani/zellwk/node_modules/mongodb-core/lib/topologies/server.js:309:35) 在 emitOne (events.js:96:13) 在 Pool.emit (events.js:188:7) 在连接处。 (/media/aryan/Adani/zellwk/node_modules/mongodb-core/lib/connection/pool.js:270:12) 在 Connection.g (events.js:292:16) 在 emitTwo (events.js:106:13) 在 Connection.emit (events.js:191:7) 在套接字。 (/media/aryan/Adani/zellwk/node_modules/mongodb-core/lib/connection/connection.js:185:10) 在 Socket.g (events.js:292:16) 在 emitNone (events.js:86:13) 名称:'MongoError', 消息:'第一次连接时无法连接到服务器 [ds127938.mlab.com:27938]'}

【问题讨论】:

  • 这个问题你还有其他答案吗?
  • 不!我扫描的许多线程都没有工作。
  • GitHub 仓库链接Click Here 和错误日志Click Here...感谢您的考虑。

标签: mongodb express


【解决方案1】:

为了将来参考,我在使用 MongoDB(通过 mLab)启动项目时遇到了这个问题。请记住,您首先要创建一个“数据库用户”,然后这些凭据会进入您的连接 URL:mongodb://<dbuser>:<dbpassword>@ds11111.mlab.com:11111/your-db-name

dbuser 和 dbpassword 不是您的 mLab 登录凭据,而是您创建数据库用户时的凭据。我经常忘记的细微差别。

【讨论】:

    【解决方案2】:

    如果它之前对您有效,但过一段时间后无效,可能是因为您连接到不同的网络,而现在 IP 不同。

    检查您在 mongodb 云配置中提供的 IP 和凭据!!!对我来说,IP 是问题所在。

    如果您在不同时间连接到不同的网络,您可以将其设置为 0.0.0.0/0,这样您就可以从任何地方进行连接。

    【讨论】:

      【解决方案3】:

      我有类似的错误。尝试在连接方法中使用选项useMongoClient

      { useMongoClient: true }
      

      像这样:

      mongoose.connect('mongodb://localhost:27017/test', { useMongoClient: true });
      

      在我的情况下,我也尝试在 mlab 中创建新部署并使用它。以前当我遇到错误时,我使用了一个我已经尝试连接到另一个应用程序的应用程序..?

      【讨论】:

        【解决方案4】:

        根据您的错误消息,我假设您使用 mlab 中的 mongodb 进行连接。

        我曾经遇到过这个错误,那是因为我的密码包含“@”字符。所以在更改/删除“@”字符后。我认为 mlab 使用 '@' 字符来分隔连接字符串。

        希望对您或其他人有所帮助。

        【讨论】:

          【解决方案5】:

          对我来说,它只是防火墙,在更改互联网连接后它起作用了!

          【讨论】:

          • 这将更适合作为当前状态的评论。
          【解决方案6】:

          如果您仍然有这种错误,我建议您更改数据库的区域。它帮助我解决了这个错误。

           UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [ds113454.mlab.com:13454] on first connect [MongoNetworkError: connect ETIMEDOUT 34.240.245.222:13454]
              at Pool.<anonymous> (C:\Users\sisakhanyan\Desktop\server\node_modules\mongodb-core\lib\topologies\server.js:564:11)
              at Pool.emit (events.js:180:13)
              at Connection.<anonymous> (C:\Users\sisakhanyan\Desktop\server\node_modules\mongodb-core\lib\connection\pool.js:317:12)
              at Object.onceWrapper (events.js:272:13)
              at Connection.emit (events.js:180:13)
              at Socket.<anonymous> (C:\Users\sisakhanyan\Desktop\server\node_modules\mongodb-core\lib\connection\connection.js:246:50)
              at Object.onceWrapper (events.js:272:13)
              at Socket.emit (events.js:180:13)
              at emitErrorNT (internal/streams/destroy.js:64:8)
              at process._tickCallback (internal/process/next_tick.js:178:19)
          

          【讨论】:

          • 也许如何改变它的例子也会有所帮助。
          • @onetwo12 我也在搜索示例。我知道这解决了我的问题,因为我用新的主机区域重新创建了数据库。我认为现在您可以导出数据库,然后使用另一个主机区域创建新数据库并导入旧数据库。
          【解决方案7】:

          @asNauseam 的回答对我来说是诀窍。不知道 db 用户和您的用户名之间存在差异。这个论坛帮我搞定了:https://docs.mlab.com/connecting/

          【讨论】:

            猜你喜欢
            • 2017-05-27
            • 2019-07-11
            • 1970-01-01
            • 1970-01-01
            • 2017-05-10
            • 1970-01-01
            • 1970-01-01
            • 2021-02-16
            • 2018-09-01
            相关资源
            最近更新 更多