我已经为NYC Taxi数据创建了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);
});
答案 0 :(得分:0)
可以使用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>
答案 1 :(得分:0)
我找到了解决方法:
首先,数据库的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);
});
答案 2 :(得分:0)
Rajendra Kadam 的回答是正确的。
首先您需要通过以下方式安装 neo4j-driver
:
npm install neo4j-driver
在一个可能比您的 web/
服务器的 node.js
目录高一级的目录中。
然后您需要将 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
。