1

我的 Windows PC 上有一个 neo4j 桌面 (1.​​4.3) 数据库。在 html 代码中,我正在使用连接到数据库

const driver = neo4j.driver("bolt://IP_ADDRESS:7687", neo4j.auth.basic("neo4j", "PASSWORD"));

之后我查询数据库并在网页上显示结果(我使用 Leafletjs 地图,但这不是问题)

 var session = driver.session();
   session
  .run(`MATCH....etc.... return ....
    `)
  .subscribe({
     ...... etc

到目前为止一切都很好。我在我的 PC 或家庭网络中的另一台 PC 上运行该页面,一切都很好。neo4j 的设置是 (dbms.default_listen_address=0.0.0.0) 没有问题。

问题是我如何将此页面公开给我网络之外的同事?使用 noip.com,我得到了一个映射到我的外部 IP 的临时域。我还将路由器配置为转发端口 80。
但是当页面 Javascript 加载到外部客户端时,它会尝试连接到该客户端上的 neo4j。当我将外部 IP 地址放入“const driver ...”时,连接不起作用。

如何从我的服务器连接到数据库,但对数据库的查询来自加载 Javascript 的客户端?

编辑:忘了提到我也在使用 Apache Web Server (Xampp) 为远程用户提供页面。

4

1 回答 1

0

一个简单的架构可以满足您的需求,并降低了向所有人开放数据库的风险,它使用 HTTP 服务器 + API,可通过您的 noip 提供程序访问。

您面向公众的前端(HTML + JavaScript(用于进行 API 调用等))对您可公开访问的 API(例如 nodejs 服务器)进行 HTTP(s) 调用以进行数据库调用。Cypher/与 neo 的直接数据库连接在您的用户浏览器中没有位置。

你也可以使用像GRANDstack这样的启动器。

于 2021-03-22T19:39:57.250 回答