[英]return the graph structure of a Neo4j cypher query using jquery
based on The Neo4j docs , executing: 基于Neo4j docs ,执行:
:POST /db/data/transaction/commit
{"statements":[{"statement":"MATCH path = (n)-[r]->(m) RETURN path",
"resultDataContents":["graph","row"]}]}
in the neo4j browser returns the graph structure plus the rows. 在neo4j浏览器中,返回图形结构以及行。 I wonder how can I specify (
"resultDataContents":["graph","row"]
) in a jQuery ajax request. 我想知道如何在jQuery ajax请求中指定(
"resultDataContents":["graph","row"]
)。 I have tried this which doesn't work: 我已经尝试了这不起作用:
var request = $.ajax({
type: "POST",
url: "http://localhost:7474/db/data/cypher",
accepts: { json: "application/json" },
dataType: "json",
contentType:"application/json",
data: JSON.stringify({ "query" : "MATCH (n)--(m) RETURN n,m LIMIT 2", "params": {"resultDataContents":["graph","row"]} })
});
Essentially I want to build a neo4j browser clone where I can submit queries and receive the results and perhaps visualize them. 本质上,我想构建一个neo4j浏览器克隆,在其中我可以提交查询并接收结果,并可视化它们。
The result data formats are only available through the cypher http transactional endpoint : http://neo4j.com/docs/stable/rest-api-transactional.html#rest-api-return-results-in-graph-format 结果数据格式仅可通过密码http事务终结点使用:http: //neo4j.com/docs/stable/rest-api-transactional.html#rest-api-return-results-in-graph-format
Which is the one used by the neo4j browser. neo4j浏览器使用的那个。 Notice the difference between the two urls you mention.
请注意您提到的两个URL之间的区别。
Here is the whole procedure from query to obtaining the nodes and links of the graph. 这是从查询到获得图的节点和链接的整个过程。
Note that the neo4j docs (Converting Neo4j Query Results to D3 JSON) has an error : replace start
with source
and end
with target
if you want to use the graph for force directed layout. 请注意,neo4j 文档 (将Neo4j查询结果转换为D3 JSON)有一个错误:如果要将图形用于强制定向布局,请替换以
source
start
和以target
end
。
// The query
var query= {"statements":[{"statement":"MATCH p=(n)-->(m)<--(k),(n)--(k) RETURN p Limit 100",
"resultDataContents":["graph","row"]}]};
//the helper function provided by neo4j documents
function idIndex(a,id) {
for (var i=0;i<a.length;i++) {
if (a[i].id == id) return i;}
return null;
}
// jQuery ajax call
var request = $.ajax({
type: "POST",
url: "http://localhost:7474/db/data/transaction/commit",
accepts: { json: "application/json" },
dataType: "json",
contentType:"application/json",
data: JSON.stringify(query),
//now pass a callback to success to do something with the data
success: function (data) {
// parsing the output of neo4j rest api
data.results[0].data.forEach(function (row) {
row.graph.nodes.forEach(function (n) {
if (idIndex(nodes,n.id) == null){
nodes.push({id:n.id,label:n.labels[0],title:n.properties.name});
}
});
links = links.concat( row.graph.relationships.map(function(r) {
// the neo4j documents has an error : replace start with source and end with target
return {source:idIndex(nodes,r.startNode),target:idIndex(nodes,r.endNode),type:r.type};
}));
});
var graph = {nodes:nodes, links:links};
// Now do something awesome with the graph!
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.