带有键线的 Neo4jClient
Neo4jClient with keylines
简介:
我是 Neo4jClient 的新手,所以如果我问以前有人问过的问题,请原谅我。但我一直坚持这一点。
我想做什么:
我正在尝试使用 .NET 将 Neo4j 与 Keylines 连接起来。
原因:
首先,我使用 Neo4j 的 REST 和 Jquery AJAX 来做 Return (*) returned 一切包括数据和 URI's of self, start, end, all_Relationships等
data: Object
end: "http://localhost:7474/db/data/node/93"
extensions: Object
metadata: Object
properties: "http://localhost:7474/db/data/relationship/4019/properties"
property: "http://localhost:7474/db/data/relationship/4019/properties/{key}"
self: "http://localhost:7474/db/data/relationship/4019"
start: "http://localhost:7474/db/data/node/6"
type: "SENT"
因此我能够使用自己作为 keylines 节点的 ID,并将开始和结束 URI 作为 Keylines 的 Link id1 和 id2。
function queryNeo4j(query) {
var request = $.ajax({
type: "POST",
url: "http://localhost:7474/db/data/cypher",
contentType: "application/json",
data: JSON.stringify({ "query": query, "params": {} }),
success: afterQueryNeo4j
});
};
function afterQueryNeo4j(json) {
console.log(json); // returned data from ajax call
makeNodes(json);
makeLinks(json);
//console.log(items);
createKeylines(items);
};
// populates global var itmes with nodes
function makeNodes(param) {
for (i = 0; i < param.data.length ; i++) {
for (j = 0 ; j < 2 ; j++) {
var node = {
type: 'node',
id: param.data[i][j].self,
dt: stringToDateConverter(String(param.data[i][1].data.yyyyMMdd)),
b: 'rgb(100,255,0)',
c: 'rgb(0,0,255)',
t: param.data[i][j].data.name,
subject: param.data[i][j].data.subject
};
items.push(node);
}
}
};
// populates global var itmes with nodes
function makeLinks(json) {
for (i = 0; i < json.data.length; i++) {
var link = {
type: 'link',
id: json.data[i][2].self,
id1: json.data[i][2].start,
id2: json.data[i][2].end,
t: json.data[i][2].metadata.type,
w: 2,
c: 'rgb(0,0,255)'
}
items.push(link);
}
}
使用这种技术,我成功地仅使用客户端 Javascript 绘制了关键线图和时间条。
但是当我在 IIS 上发布它时出现了问题,它给了我跨域错误,这意味着我必须从服务器代码 (C#) 调用 Neo4j 并将其提供给客户端 HTML/JS。那是我发现 Neo4jClient 的时候。
到目前为止完成:
我可以使用
在我的 C# 代码中成功地从 Neo4j 中读取数据
public class Person
{
public string name { get; set; }
public int dob { get; set; }
}
var query = client.cypher
.match(("person:Person"))
.return(person => person.As<Person>());
var result = query.results;
foreach (var i in result)
{
Console.WriteLine("people name is:"+i.name);
}
问题:
现在,我只能读取基于我的 Cypher 查询的数据,但不能读取我的 UI 所需的其他内容,如 id、self、开始、结束 URI 和关系。
有没有办法使用 neo4jclient 获取 Return (*) 和所有其他元数据?任何代码都会有所帮助。
我是否应该通过使用 JSONP 或 CORS 解决交叉引用错误来坚持客户端 ajax 调用,因为它更容易,但我担心它可能会给我带来一些问题,因为这不是正确的方法?
我似乎找不到任何适用于 Neo4jClient 的文档。
我在 Intellisense 中看到 return 有很多选项,但不知道如何使用它们。
任何帮助是极大的赞赏。
提前致谢。
您可以将 return
更改为:
.Return(person => person.As<Node<Person>>());
这将 return 包含所有节点优点的 Data
包装器,应该可以让您到达那里。
简介: 我是 Neo4jClient 的新手,所以如果我问以前有人问过的问题,请原谅我。但我一直坚持这一点。
我想做什么: 我正在尝试使用 .NET 将 Neo4j 与 Keylines 连接起来。
原因: 首先,我使用 Neo4j 的 REST 和 Jquery AJAX 来做 Return (*) returned 一切包括数据和 URI's of self, start, end, all_Relationships等
data: Object
end: "http://localhost:7474/db/data/node/93"
extensions: Object
metadata: Object
properties: "http://localhost:7474/db/data/relationship/4019/properties"
property: "http://localhost:7474/db/data/relationship/4019/properties/{key}"
self: "http://localhost:7474/db/data/relationship/4019"
start: "http://localhost:7474/db/data/node/6"
type: "SENT"
因此我能够使用自己作为 keylines 节点的 ID,并将开始和结束 URI 作为 Keylines 的 Link id1 和 id2。
function queryNeo4j(query) {
var request = $.ajax({
type: "POST",
url: "http://localhost:7474/db/data/cypher",
contentType: "application/json",
data: JSON.stringify({ "query": query, "params": {} }),
success: afterQueryNeo4j
});
};
function afterQueryNeo4j(json) {
console.log(json); // returned data from ajax call
makeNodes(json);
makeLinks(json);
//console.log(items);
createKeylines(items);
};
// populates global var itmes with nodes
function makeNodes(param) {
for (i = 0; i < param.data.length ; i++) {
for (j = 0 ; j < 2 ; j++) {
var node = {
type: 'node',
id: param.data[i][j].self,
dt: stringToDateConverter(String(param.data[i][1].data.yyyyMMdd)),
b: 'rgb(100,255,0)',
c: 'rgb(0,0,255)',
t: param.data[i][j].data.name,
subject: param.data[i][j].data.subject
};
items.push(node);
}
}
};
// populates global var itmes with nodes
function makeLinks(json) {
for (i = 0; i < json.data.length; i++) {
var link = {
type: 'link',
id: json.data[i][2].self,
id1: json.data[i][2].start,
id2: json.data[i][2].end,
t: json.data[i][2].metadata.type,
w: 2,
c: 'rgb(0,0,255)'
}
items.push(link);
}
}
使用这种技术,我成功地仅使用客户端 Javascript 绘制了关键线图和时间条。 但是当我在 IIS 上发布它时出现了问题,它给了我跨域错误,这意味着我必须从服务器代码 (C#) 调用 Neo4j 并将其提供给客户端 HTML/JS。那是我发现 Neo4jClient 的时候。
到目前为止完成: 我可以使用
在我的 C# 代码中成功地从 Neo4j 中读取数据public class Person
{
public string name { get; set; }
public int dob { get; set; }
}
var query = client.cypher
.match(("person:Person"))
.return(person => person.As<Person>());
var result = query.results;
foreach (var i in result)
{
Console.WriteLine("people name is:"+i.name);
}
问题: 现在,我只能读取基于我的 Cypher 查询的数据,但不能读取我的 UI 所需的其他内容,如 id、self、开始、结束 URI 和关系。
有没有办法使用 neo4jclient 获取 Return (*) 和所有其他元数据?任何代码都会有所帮助。 我是否应该通过使用 JSONP 或 CORS 解决交叉引用错误来坚持客户端 ajax 调用,因为它更容易,但我担心它可能会给我带来一些问题,因为这不是正确的方法?
我似乎找不到任何适用于 Neo4jClient 的文档。 我在 Intellisense 中看到 return 有很多选项,但不知道如何使用它们。 任何帮助是极大的赞赏。 提前致谢。
您可以将 return
更改为:
.Return(person => person.As<Node<Person>>());
这将 return 包含所有节点优点的 Data
包装器,应该可以让您到达那里。