通过 Shinyapps.io 连接到 MongoDB Atlas

Dyn*_*ice 6 r mongodb shiny mongolite shinyapps

我试图将我闪亮的应用程序连接到 mongodb 服务器。我在 Shinyapps.io 上部署了应用程序,但一次又一次地出错:

2019-10-22T18:14:14.694520+00:00 shinyapps[1117463]: Listening on http://127.0.0.1:36739
2019-10-22T18:14:36.665309+00:00 shinyapps[1117463]: Warning: Error in : No suitable servers found (`serverSelectionTryOnce` set): [socket timeout calling ismaster on 'seaport-shard-00-01-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-02-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-00-rysq4.gcp.mongodb.net:27017']
2019-10-22T18:14:36.670320+00:00 shinyapps[1117463]:   61: mongo_collection_command_simple
2019-10-22T18:14:36.670321+00:00 shinyapps[1117463]:   60: mongo
2019-10-22T18:14:36.670322+00:00 shinyapps[1117463]:   59: server [/srv/connect/apps/Seaport/app.R#223]
2019-10-22T18:14:36.670413+00:00 shinyapps[1117463]: Error : No suitable servers found (`serverSelectionTryOnce` set): [socket timeout calling ismaster on 'seaport-shard-00-01-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-02-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-00-rysq4.gcp.mongodb.net:27017']
Run Code Online (Sandbox Code Playgroud)

更有趣的是,这个应用程序在我的 PC 本地运行良好,而且它在过去 2 周内在 Shinyapps 上运行良好。

我尝试使用标准连接字符串部署应用程序:

2019-10-22T18:14:14.694520+00:00 shinyapps[1117463]: Listening on http://127.0.0.1:36739
2019-10-22T18:14:36.665309+00:00 shinyapps[1117463]: Warning: Error in : No suitable servers found (`serverSelectionTryOnce` set): [socket timeout calling ismaster on 'seaport-shard-00-01-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-02-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-00-rysq4.gcp.mongodb.net:27017']
2019-10-22T18:14:36.670320+00:00 shinyapps[1117463]:   61: mongo_collection_command_simple
2019-10-22T18:14:36.670321+00:00 shinyapps[1117463]:   60: mongo
2019-10-22T18:14:36.670322+00:00 shinyapps[1117463]:   59: server [/srv/connect/apps/Seaport/app.R#223]
2019-10-22T18:14:36.670413+00:00 shinyapps[1117463]: Error : No suitable servers found (`serverSelectionTryOnce` set): [socket timeout calling ismaster on 'seaport-shard-00-01-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-02-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-00-rysq4.gcp.mongodb.net:27017']
Run Code Online (Sandbox Code Playgroud)

添加 scram sha 选项:

Data <- mongo(collection = 'Data',
              db = 'MaterialSeaport',
              url = 'mongodb+srv://<USER>:<PASSWORD>@seaport-rysq4.gcp.mongodb.net/test?retryWrites=true&w=majority')
Run Code Online (Sandbox Code Playgroud)

并使用旧的连接字符串:

Data <- mongo(collection = 'Data',
              db = 'MaterialSeaport',
              url = 'mongodb+srv://<USER>:<PASSWORD>@seaport-rysq4.gcp.mongodb.net/test?retryWrites=true&w=majority&authMechanism=SCRAM-SHA-1')
Run Code Online (Sandbox Code Playgroud)

如何在没有此错误的情况下将我的应用程序与 mongodb 连接?

age*_*rry 0

通过将 MongoDB Atlas上的shinyapps.io IP列入白名单,我能够从shinyapps.io连接到MongoDB Atlas 。

  1. 登录 MongoDB Atlas
  2. 转到项目的“安全”部分下的“网络访问”
  3. 点击“添加IP地址”,添加以下shinyapp.io IP:
  • 54.204.34.9
  • 54.204.36.75
  • 54.204.37.78
  • 34.203.76.245
  • 3.217.214.132
  • 34.197.152.155

这些 IP 地址可以在 中找到[shinyapps.io Accessing Databases - Firewalls documentation][1]。该文档包含在 AWS 上加入白名单的步骤,但概念是相同的。

祝你好运!