首先,感谢您阅读此文。
其次,抱歉文章有点长 - 但我希望像一个写得好的函数一样,好的东西在前面 - 但请花时间仔细阅读全部内容。
第三,我已经失去了我看过多少个堆栈问题的记录 - 如果这仍然是一个新手问题,我很抱歉。
我正在使用Node.js为我的AngularJS客户端提供api。 我所有的数据聚合和转换都将在Node中完成,并向客户端呈现一个平坦的JSON数据结构。
我有一个Neo4j模型,它将我与我负责的应用程序相关联,并将技术风险与所有应用程序相关联。 我有一个漂亮的Cypher查询,仅显示我负责的应用程序的技术风险,并排除所有没有风险的其他应用程序。 这是我的查询结果的图片: Neo4j Graph result。
这是我的node.js代码(由主api.js文件调用的文件routes.js):
上面的代码会生成以下JSON(为了可读性,已添加分隔符)产生以下结果:
n: 数组让我感到困惑。我开始手动拆分它(尝试使用字符串和对象进行分割和插入),但我相信必须使用json解析器才能访问它。当我使用以下内容作为测试时:
我正在使用Node.js为我的AngularJS客户端提供api。 我所有的数据聚合和转换都将在Node中完成,并向客户端呈现一个平坦的JSON数据结构。
我有一个Neo4j模型,它将我与我负责的应用程序相关联,并将技术风险与所有应用程序相关联。 我有一个漂亮的Cypher查询,仅显示我负责的应用程序的技术风险,并排除所有没有风险的其他应用程序。 这是我的查询结果的图片: Neo4j Graph result。
这是我的node.js代码(由主api.js文件调用的文件routes.js):
var router = require('express').Router();
var neo4j = require('neo4j');
var db = new neo4j.GraphDatabase('http://user:password@localhost:7474');
router.get('/techrisks', getTechRisks);
module.exports = router;
function getTechRisks(req, res) {
db.cypher({
query: 'MATCH p=(a)-[e:ARCHITECT_FOR]->(b)-[d:HAS_RISK]->(c) WHERE a.shortname="macdonb" RETURN nodes(p) AS n,relationships(p) AS m',
params: {
}
}, function (err, results) {
if (err) { throw err; }
var result = results[0];
if (!result) {
console.log('No TechRisk found.');
} else {
console.log(results);
console.log(results[0]);
console.log(results[1]);
}
});
}
上面的代码会生成以下JSON(为了可读性,已添加分隔符)产生以下结果:
- - - - console.log(results); - - - -
[ { n: [ [Object], [Object], [Object] ],
m: [ [Object], [Object] ] },
{ n: [ [Object], [Object], [Object] ],
m: [ [Object], [Object] ] },
{ n: [ [Object], [Object], [Object] ],
m: [ [Object], [Object] ] },
{ n: [ [Object], [Object], [Object] ],
m: [ [Object], [Object] ] },
{ n: [ [Object], [Object], [Object] ],
m: [ [Object], [Object] ] } ]
- - - - console.log(results[0]); - - - -
{ n:
[ Node { _id: 585, labels: [Object], properties: [Object] },
Node { _id: 675, labels: [Object], properties: [Object] },
Node { _id: 695, labels: [Object], properties: [Object] } ],
m:
[ Relationship {
_id: 845,
type: 'ARCHITECT_FOR',
properties: [Object],
_fromId: 585,
_toId: 675 },
Relationship {
_id: 813,
type: 'HAS_RISK',
properties: [Object],
_fromId: 675,
_toId: 695 } ] }
- - - - console.log(results[1]); - - - -
{ n:
[ Node { _id: 585, labels: [Object], properties: [Object] },
Node { _id: 674, labels: [Object], properties: [Object] },
Node { _id: 689, labels: [Object], properties: [Object] } ],
m:
[ Relationship {
_id: 844,
type: 'ARCHITECT_FOR',
properties: [Object],
_fromId: 585,
_toId: 674 },
Relationship {
_id: 810,
type: 'HAS_RISK',
properties: [Object],
_fromId: 674,
_toId: 689 } ] }
n: 数组让我感到困惑。我开始手动拆分它(尝试使用字符串和对象进行分割和插入),但我相信必须使用json解析器才能访问它。当我使用以下内容作为测试时:
var tmpResult1 = JSON.stringify(result.n);
我得到了一个很棒的n字符串表示:
[{"_id":585,"labels":["Person"],"properties":{"hrpno":"00061627","lastName":"MacDonald","title":"Consultant, IT Architecture","hrdno":"104134","shortname":"macdonb","role":"Systems Architect","displayName":"Bruce MacDonald","firstName":"Bruce"}},{"_id":650,"labels":["Application"],"properties":{"dateverified":"2016-01-19","name":"Portal - Loss Runs","aprmid":"aprm1249"}},{"_id":683,"labels":["TechRisk"],"properties":{"status":"Documented","riskid":"ABC-2012-082","dateEntered":"2012-06-29"}}]
这个字符串很好,但是当我试图使用点号或方括号引用数组时,会出现许多“未定义”错误。
我有点迷失了,准备再休息一两天。我在 YouTube 上寻找教程——“大约有49,300个结果”(!),我已经看了30多个,它们都涉及简单的结构,并以“电影”为例子。
再次感谢您的耐心阅读!我非常感激任何帮助或提示。
s
了。我已经编辑了我的回答。 - Shanoor