【问题标题】:Meteor: Remote MongoDB with dynamic IPMeteor:具有动态 IP 的远程 MongoDB
【发布时间】:2016-06-22 20:38:23
【问题描述】:

在本地网络中(我应该无法控制),我需要将我的本地流星应用程序实例连接到在另一台 PC 上运行的 MongoDB。使用MONGO_URL="mongodb://192.168.1.xx:27017" meteor之类的东西我可以连接到它;但是,如果我不知道 IP,因为它可能每天都在变化,有什么方法可以连接?

我在这里尝试的是这样的:

Meteor.startup(() => {
//Script to find the correct IP
//Connect my app to that MongoDB instance
});

简而言之:有什么方法可以动态设置 MONGO_URL 吗?

谢谢

【问题讨论】:

  • 你可以使用mLab.com
  • @Mikhail 我忘了提到该应用程序只能在本地网络上运行。这是一款基于 Meteor 的桌面应用。

标签: node.js mongodb meteor


【解决方案1】:

使用 MongoDB 服务器的主机名。只要您有本地 DNS 服务器并且两台计算机都使用相同的 DNS 服务器(除非您在任一 PC 上自定义了网络设置,否则很可能是这种情况),名称将解析为 IP 地址。

要获取服务器的主机名,请在命令提示符(或 Mac 上的终端)中输入 hostname

或者,即使没有对网络的控制,只要您具有本地管理员权限,您也可以在 MongoDB 服务器上配置静态 IP 地址。只需确保它与网络的其余部分在同一网络范围内,但尽量避开您的 DHCP 范围,否则您可能会遇到 IP 冲突。

【讨论】:

  • 谢谢。但是,当我尝试 MONGO_URL="mongodb://SERVER--V1:27017" 流星时。我收到“连接失败”。 “SERVER-V1”是PC的主机名,27017是开放端口。
  • 您可能需要一个完全限定的名称,例如server--v1.somedomain.local。这可以由您的路由器在分配 DHCP 时指定,也可以由您的计算机指定。
  • 您可以尝试的一件事是反向 DNS 查找 - 尝试在命令提示符中输入:ping -a 192.168.1.xx,它将查询 DNS 服务器以获取 PTR 记录,如果存在,则会为您提供主机名。这可能不起作用的原因有很多,但值得一试
  • 我了解远程解决网络问题有多么困难。暂时我会仔细研究我的网络。但是,我仍然不知道如何在应用程序启动后动态设置 MONGO_URL。这甚至可能吗?
  • 我对 Meteor 并不特别熟悉,但是您的服务器在保持连接到网络的同时不太可能更改 IP 地址,除非重新启动路由器或其他情况。如果是这样,很可能需要重新启动 MongoDB 以便它可以侦听新的 IP 地址。对于客户端应用,每次建立连接都会先查询本地DNS缓存,如果存在就使用缓存地址,否则会重新查询DNS服务器。您的计算机缓存地址的时间取决于您的 DNS 服务器。
猜你喜欢
  • 2016-02-13
  • 1970-01-01
  • 2015-01-23
  • 2017-06-01
  • 2016-09-23
  • 2023-03-28
  • 2023-04-10
  • 2016-08-13
  • 2011-06-12
相关资源
最近更新 更多