【问题标题】:Connect to MongoDB Atlas from Google App Engine从 Google App Engine 连接到 MongoDB Atlas
【发布时间】:2019-01-27 12:55:51
【问题描述】:

我正在尝试在 Google App Engine 标准环境中设置 API,但无法连接到远程 MongoDB 实例。

我在 MongoDB Atlas 上使用免费的 M0 集群,所有 IP 都被列入白名单。 Google App Engine 防火墙规则允许来自所有 IP 地址的所有流量,以确保连接请求不被阻止。

但是,我无法连接到我的 Mongo 实例,并且出现以下错误:

ERROR db_connection querySrv ESERVFAIL <mongo-url>.gcp.mongodb.net

要连接到 MongoDB 实例,我使用 Mongoose 并执行以下操作:

const db = await mongoose.connect(uri, { useNewUrlParser: true });

但是db 将始终为空,因为我无法连接。有没有办法从 App Engine Standard 连接到 MongoDB Atlas,还是我必须使用 Cloud Datastore?

【问题讨论】:

  • 我对 Mongoose 的了解并不那么广泛,但是,您的 URI 不应该是 mongodb://username:password@host:port/database?options... 之类的东西吗?就像提到的in here
  • 无法将 mongodb 与 Google App Engine 标准环境一起使用,Datastore 是唯一的选择。如果必须使用 mongodb,请移至 灵活的环境
  • @Mangu 这不是连接 uri,因此格式不同。我使用的连接 uri 确实使用了您指定的格式:)
  • @cheekujha 我明白了,谢谢你的回答!
  • @Mangu:是的,在 GCE 上是可能的。但在 GAE 上不可能

标签: node.js mongodb google-app-engine google-cloud-platform


【解决方案1】:

我不得不使用旧版本的 atlas url

【讨论】:

  • 我不用添加{useNewUrlParser: false}就让它工作了
  • 它适用于没有 {useNewUrlParser: false} 的旧驱动程序版本的 url
  • 谢谢,我已经找了几个小时的解决方案了!
  • 感谢您的反馈。将删除有关 url 解析器的部分。
【解决方案2】:

您不必使用数据存储区。您可以连接到托管在 Google 服务器之外的 mongoDB,有一些示例代码 here。我还想推荐您参考this documentation 从标准环境连接到外部数据库。 确保您的防火墙是开放的是必要的(而且您已经这样做了,这很好)。 MongoDB Node.JS 驱动程序在here 中列出,根据您使用的版本,不同的参考文档可用于连接示例(都在同一个链接上列出)。

【讨论】:

    【解决方案3】:

    它适用于较旧的驱动程序版本 url:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      相关资源
      最近更新 更多