我为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);
});
可以使用Neo4j Driver for JavaScript从客户端Javascript查询Neo4j。
我在几个项目中使用过它。
您可以下载驱动程序并在HTML文件中包含如下内容:
<script src="lib/browser/neo4j-web.min.js"></script>
或者只使用CDN链接:
<script src="https://unpkg.com/[email protected]/lib/browser/neo4j-web.min.js"></script>
我找到了解决方案:
首先,数据库的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);
});