【问题标题】:Can I query the neo4j database with Javascript?我可以用 Javascript 查询 neo4j 数据库吗?
【发布时间】:2019-01-14 19:17:06
【问题描述】:

我为纽约市出租车数据创建了一个 geohash neo4j 数据库。 现在下一步是在地图中将其可视化,为此我选择 Leaflet 作为 Javascript 库。 使用静态数据,我可以在 Leaflet 中绘制 geohash 数据:

但现在我想从 neo4j 数据库中查询该数据并进行渲染。

那么是否可以这样做或仅使用服务器端脚本语言(node.js,php...)?

更新

我发现了一个类似的问题here,解决方案是使用 ajax 查询数据库,但它对我不起作用,我在控制台中收到“错误”:

var body = JSON.stringify({
            statements: [{
                statement: 'MATCH (n) RETURN count(n)'
            }]
        });
   $.ajax({
        url: "http://localhost:7474",
        type: "POST",
        data: body,
        contentType: "application/json"
    })
        .done(function(result){
            console.log(result);

        })
        .fail(function(error){
            console.log(error.statusText);
        });

【问题讨论】:

    标签: javascript ajax neo4j neo4j-driver


    【解决方案1】:

    可以使用 Neo4j Driver for JavaScript 从客户端 Javascript 查询 Neo4j。

    我在几个项目中使用过这个。

    您可以下载驱动程序并将其包含在您的 HTML 文件中,例如:

     <script src="lib/browser/neo4j-web.min.js"></script>
    

    或者只使用 CDN 链接,例如:

    <script src="https://unpkg.com/neo4j-driver@X.Y.Z/lib/browser/neo4j-web.min.js"></script>
    

    【讨论】:

      【解决方案2】:

      我找到了解决办法:

      首先数据库的 url 是:“http://localhost:7474/db/data/transaction/commit”而不是“http://localhost:7474”。

      然后在更改后我在控制台中遇到未经授权的错误,这意味着我需要将我的用户/密码添加到我的 ajax 调用中,这是由一个名为 beforeSend 的函数完成的,如下所示:

      beforeSend: function (xhr) {
                      xhr.setRequestHeader ("Authorization", "Basic " + btoa("neo4j"+ ":" + "your_neo4j_password"));
                  }}
      

      所以最终的 Ajax 解决方案是:

      $.ajax({
                  url: "http://localhost:7474/db/data/transaction/commit",
                  type: "POST",
                  data: body,
                  contentType: "application/json",
                  beforeSend: function (xhr) {
                      xhr.setRequestHeader ("Authorization", "Basic " + btoa("neo4j"+ ":" + "password"));
                  }}
                  )
                  .done(function(result){
                       console.log(result);
                  }) 
                  .fail(function(error){
                      console.log(error.statusText);
                  });
      

      【讨论】:

        【解决方案3】:

        Rajendra Kadam 的回答是正确的。

        首先你需要安装neo4j-driver by:

        npm install neo4j-driver
        

        在可能比您的node.js 服务器的web/ 目录高一级的目录中。

        然后您需要将neo4j-web.min.js 放入web/ 目录,您的客户端JavaScript 可以在其中加载。

        然后在 HTML 中添加该行:

         <script src="js/neo4j-web.min.js"></script>
        

        文件neo4j-web.min.js位于node_modules/neo4j-driver/lib/browser/

        然后在您的客户端 JavaScript 中,输入:

        var driver = neo4j.driver(
            'neo4j://localhost',
            neo4j.auth.basic('neo4j', 'password') );
        

        那么你已经成功打开驱动了。 (您可能需要正确设置密码,否则会出现身份验证错误。)

        请注意,您不要在客户端 JavaScript 上需要此行:

        var neo4j = require('neo4j-driver');
        

        因为它是 服务器端 node.js.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-29
          • 1970-01-01
          相关资源
          最近更新 更多