我可以用 Javascript 查询 neo4j 数据库吗?
Can I query the neo4j database with Javascript?
我为纽约出租车数据创建了一个 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 link,例如:
<script src="https://unpkg.com/neo4j-driver@X.Y.Z/lib/browser/neo4j-web.min.js"></script>
我找到了解决方案:
首先,数据库的 url 是:“http://localhost:7474/db/data/transaction/commit" and not "http://localhost:7474”。
然后在更改后我在控制台中遇到未经授权的错误,这意味着我需要将我的 user/password 添加到我的 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);
});
Rajendra Kadam 的回答是正确的。
首先您需要通过以下方式安装 neo4j-driver
:
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
.
我为纽约出租车数据创建了一个 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 link,例如:
<script src="https://unpkg.com/neo4j-driver@X.Y.Z/lib/browser/neo4j-web.min.js"></script>
我找到了解决方案:
首先,数据库的 url 是:“http://localhost:7474/db/data/transaction/commit" and not "http://localhost:7474”。
然后在更改后我在控制台中遇到未经授权的错误,这意味着我需要将我的 user/password 添加到我的 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);
});
Rajendra Kadam 的回答是正确的。
首先您需要通过以下方式安装 neo4j-driver
:
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
.