Mongodb Atlas Express.js Error: getaddrinfo ENOTFOUND



我想将我的Express应用程序连接到我的MongoDB Atlas群集。
我来自伊朗,云数据库已被我们批准。我使用VPN绕过它,以便能够练习。我做过一些编码错误还是由于使用VPN?

错误:

(node:9008) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
connected
events.js:174
      throw er; // Unhandled 'error' event
      ^
Error: getaddrinfo ENOTFOUND
is listening...
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
Emitted 'error' event at:
    at GetAddrInfoReqWrap.doListen [as callback] (net.js:1448:12)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:17)
[nodemon] app crashed - waiting for file changes before starting...

和代码:

database.js
----------------
const mongoDb = require('mongodb');
const MongoClient = mongoDb.MongoClient;
let _db;
const mongoConnect = callback => {
  MongoClient.connect(
    'mongodb+srv://<someUser>:<somePassword>@<someCluster>-zh1eb.mongodb.net/test?retryWrites=true'
  )
    .then(client => {
      console.log('nconnectedn');
      _db = client.db();
      callback();
    })
    .catch(err => {
      console.log('nerrorn', err);
      throw err;
    });
};
const getDb = () => {
  if (_db) {
    return _db;
  }
  throw 'NO DATABASE FOUND';
};
exports.mongoConnect = mongoConnect;
exports.getDb = getDb;


app.js
------------
...
const mongoConnect = require('./util/database').mongoConnect;
...
mongoConnect(() => {
  app.listen(3000, 'nis listening...n');
});

我发现了什么问题:

mongoConnect(() => {
  app.listen(3000, 'nis listening...n');
});

实际上应该是

mongoConnect(() => {
  app.listen(3000, () => { console.log('nis listening...n');});
});

愚蠢的我...:(

对于那些有此类问题的人:
首先检查问题的来源是您的代码还是与MongoDB的连接。
那就是而是选择"连接您的应用程序"选择"与MongoDB Compass"
如果MongoDB指南针可以连接并显示您的群集,那么您的代码肯定有问题,ESP。如何编码以连接。

最新更新