[英]Can I query the neo4j database with Javascript?
我為紐約出租車數據創建了一個 geohash neo4j 數據庫。 現在下一步是在地圖中可視化它,為此我選擇 Leaflet 作為 Javascript 庫。 使用靜態數據,我可以在 Leaflet 中繪制 geohash 數據:
但現在我想從 Neo4j 數據庫中查詢該數據並呈現它。
那么有可能做到這一點還是只能使用服務器端腳本語言(node.js,php...)?
我在這里找到了一個 simlair 問題,解決方案是使用 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/neo4j-driver@X.Y.Z/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);
});
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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.