【问题标题】:can't connect to mongdb nodejs无法连接到mongodb nodejs
【发布时间】:2021-01-12 20:17:14
【问题描述】:

我在尝试使用我的 nodejs 应用程序连接到 mongodb 时遇到了一些问题。 这是代码

const { MongoClient } = require("mongodb");

async function main() {
  const uri =
    "mongodb+srv://xxxx:xxxx@xxxx.uj545.mongodb.net/xxxx?retryWrites=true&w=majority";
  const client = new MongoClient(uri);
  await client.connect();
  await listDatabases(client);
  try {
    await client.connect();
    await listDatabases(client);
  } catch (e) {
    console.error(e);
  } finally {
    await client.close();
  }
}

main().catch(console.error);

这是输出:

Error: queryTxt ETIMEOUT xxxx.uj545.mongodb.net
    at QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19) {
  errno: undefined,
  code: 'ETIMEOUT',
  syscall: 'queryTxt',
  hostname: 'xxxx.uj545.mongodb.net'
}

但是当我尝试使用 Mongodb Compass 进行测试连接时,我遇到了同样的问题。

然后我使用 Google Cloud Platform 中的 Windows VPS 尝试了 Mongodb Compass,它成功了,

那么,到底哪里出错了?

我使用的设备是 Macbook Air 2015 年初的 MacOs mojave

【问题讨论】:

  • 可能问题出在mongodb设置中的网络访问配置
  • 我已将配置设置为接受所有传入的 IP 地址 [0.0.0.0/0]

标签: javascript node.js mongodb


【解决方案1】:

我建议您不要使用原始连接,而是可以使用 mongoose 作为 ODM 来使用它 这是参考link

【讨论】:

    【解决方案2】:

    如果在mongodb cloud中创建db,需要在mongodb cloud面板的Network Access中配置ip地址。

    如果您想允许从任何 ip 访问,请使用 0.0.0.0/0,或输入您的 ip。

    【讨论】:

    • 我已经完成了,但我仍然面临同样的问题
    • 好的,尝试从 uri 中删除“+srv”。或在集群的连接形式中选择“连接您的应用程序”并选择“nodejs”并使用“2.2.12 或更高版本”之类的版本来生成 uri。
    猜你喜欢
    • 2020-09-13
    • 2023-02-07
    • 2021-06-25
    • 2019-01-12
    • 2021-09-20
    • 2020-04-03
    • 1970-01-01
    • 2021-02-09
    • 2020-06-16
    相关资源
    最近更新 更多