Tag: neo4j

如何在nodejs中为neo4jgraphics数据库创build模式?

我在想,我们如何防止用户/开发人员添加不需要的节点/关系/属性? 我读的是 – 我们应该在应用程序层面强加这些模式。 那么,我们如何在Node.js中做到这一点? 有没有这样的例子? 或者有人可以在这里发布一些代码?

Neo4j java.lang.NullPointerException不能理解

我有NodeJS项目,我正在使用neo4j库版本^2.0.0-RC2执行Neo4j Cypher查询。 我有一个查询,如果在Node应用程序中运行给出了下面的错误堆栈,但如果我在浏览器控制台内运行相同的查询,它会返回罚款。 [neo4j.DatabaseError: [Neo.DatabaseError.Statement.ExecutionFailure] java.lang.NullPointerException at org.neo4j.cypher.internal.compiler.v2_3.pipes.NiceHasherValue.equals(NiceHasher.scala:70) at scala.collection.mutable.FlatHashTable$class.findElemImpl(FlatHashTable.scala:128) at scala.collection.mutable.FlatHashTable$class.containsElem(FlatHashTable.scala:121) at scala.collection.mutable.HashSet.containsElem(HashSet.scala:40) at scala.collection.mutable.HashSet.contains(HashSet.scala:57) at org.neo4j.cypher.internal.compiler.v2_3.pipes.aggregation.DistinctFunction.apply(DistinctFunction.scala:38) at org.neo4j.cypher.internal.compiler.v2_3.pipes.EagerAggregationPipe$$anonfun$internalCreateResults$1$$anonfun$apply$1.apply(EagerAggregationPipe.scala:84) at org.neo4j.cypher.internal.compiler.v2_3.pipes.EagerAggregationPipe$$anonfun$internalCreateResults$1$$anonfun$apply$1.apply(EagerAggregationPipe.scala:84) at scala.collection.immutable.List.foreach(List.scala:381) at org.neo4j.cypher.internal.compiler.v2_3.pipes.EagerAggregationPipe$$anonfun$internalCreateResults$1.apply(EagerAggregationPipe.scala:84) at org.neo4j.cypher.internal.compiler.v2_3.pipes.EagerAggregationPipe$$anonfun$internalCreateResults$1.apply(EagerAggregationPipe.scala:80) at scala.collection.Iterator$class.foreach(Iterator.scala:742) at scala.collection.AbstractIterator.foreach(Iterator.scala:1194) at org.neo4j.cypher.internal.compiler.v2_3.pipes.EagerAggregationPipe.internalCreateResults(EagerAggregationPipe.scala:80) at org.neo4j.cypher.internal.compiler.v2_3.pipes.PipeWithSource.createResults(Pipe.scala:125) at org.neo4j.cypher.internal.compiler.v2_3.pipes.PipeWithSource.createResults(Pipe.scala:122) at org.neo4j.cypher.internal.compiler.v2_3.executionplan.DefaultExecutionResultBuilderFactory$ExecutionWorkflowBuilder.createResults(DefaultExecutionResultBuilderFactory.scala:93) at org.neo4j.cypher.internal.compiler.v2_3.executionplan.DefaultExecutionResultBuilderFactory$ExecutionWorkflowBuilder.build(DefaultExecutionResultBuilderFactory.scala:63) at org.neo4j.cypher.internal.compiler.v2_3.executionplan.ExecutionPlanBuilder$$anonfun$getExecutionPlanFunction$1.apply(ExecutionPlanBuilder.scala:223) at org.neo4j.cypher.internal.compiler.v2_3.executionplan.ExecutionPlanBuilder$$anonfun$getExecutionPlanFunction$1.apply(ExecutionPlanBuilder.scala:207) at org.neo4j.cypher.internal.compiler.v2_3.executionplan.ExecutionPlanBuilder$$anon$2.run(ExecutionPlanBuilder.scala:164) at org.neo4j.cypher.internal.compatibility.CompatibilityFor2_3$ExecutionPlanWrapper$$anonfun$run$1.apply(CompatibilityFor2_3.scala:200) at org.neo4j.cypher.internal.compatibility.CompatibilityFor2_3$ExecutionPlanWrapper$$anonfun$run$1.apply(CompatibilityFor2_3.scala:200) at org.neo4j.cypher.internal.compatibility.exceptionHandlerFor2_3$.runSafely(CompatibilityFor2_3.scala:116) at […]

这是用Neo4j编写多语句事务的正确方法吗?

我很难解释Neo4j关于事务的文档。 他们的文档似乎表明喜欢这样做,而不是显式声明tx.commit()和tx.rollback() 。 这看起来是多语句交易和neo4j-driver最佳实践吗? const register = async (container, user) => { const session = driver.session() const timestamp = Date.now() const saltRounds = 10 const pwd = await utils.bcrypt.hash(user.password, saltRounds) try { //Start registration transaction const registerUser = session.writeTransaction(async (transaction) => { const initialCommit = await transaction .run(` CREATE (p:Person { email: '${user.email}', tel: '${user.tel}', […]

string化时如何从对象中删除引号和反斜杠(无正则expression式)

我使用的Neo4j有一个子句,可以一次设置多个属性: MATCH (p:Person) WHERE p.email = '${userEmail}' SET p += ${argsToUpdate} RETURN p AS Person 但是,我无法将argsToUpdate放入查询中,因为Neo4j正在查找与此处显示的string完全相同的string: { email: 'test@test.com', age: 1337, colour: 'blue' } 我可以使用JSON.stringify(argsToUpdate)正则expression式和strip \和“但是这是欠佳的,因为一些属性可能包含这些字符。也许他们可以先编码。 我也试过JSON.parse(JSON.stringify(argsToUpdate)) 。 我使用util.inspect(argsToUpdate) ,它工作得很好,但我的开发人员不会接受它,因为它是一个node.jsdebugging方法。 有没有简单的方法来实现这个另一种方式? 我不想像这样做循环: let args = '{ ' for (let i = 0; i < Object.keys(argsToUpdate).length; i++) { args += `${prop[i]}: ${key[i]}` } args += ' […]

Cypher查询,格式/组返回值

有没有一种方法来格式化密码查询的返回值? 如果我做一个查询,返回一个节点和所有节点与该节点的关系('RETURN id(startnode),id(relationnode)')我会得到一个数组包含每个关联节点与一个startnode捆绑。 例如: [ { relationnode: 0, startnode: 1 }, { relationnode: 1, startnode: 1 } ] 我多么希望它能够工作,就是让返回值形成如下格式: { relationnode: [ 0, 1 ], startnode: 1 } 有没有办法做到这一点,还是只是不好的做法呢? 这将是非常有用的,如果我知道永远不会有超过1个startnode。 编辑:我知道我可以在查询后parsing它,我宁愿能够在查询中做到这一点。

Neo4j查询不返回任何东西,而在浏览器中相同的查询工作正常

这里是代码… var query = 'MATCH ( A:user { user_id:"user1"}) RETURN A'; var callback=function (err, res) { if (err){ console.log(err); } else { console.log("Sign in response:"+res); console.log("Sign in response:"+res.columns); } }; var query_runner=require('./run_query2') query_runner.run_query2(query,callback); 和run_query方法被定义为… var run_query2=function(query,callback){ var neo4j = require('node-neo4j'); db = new neo4j('http://username:password@localhost:7474'); db.cypherQuery(query,callback); } module.exports.run_query2=run_query2; 注:创build一个新的条目工作正常。 当我在浏览器中尝试它时,MATCH查询正常工作。 但是当我试着对代码做同样的事情时,没有任何东西会被返回。 在这里呆3-4个小时。 帮帮我!

从Neo4jparsing复杂的JSON结果

首先,感谢您阅读本文。 其次,对于这篇长文章,提前感到抱歉 – 但是我希望写一篇function良好的文章,好东西是最重要的,尽pipe请花点时间阅读。 第三,我失去了多less堆栈问题的踪迹 – 如果这仍然是一个白费问题,我很抱歉。 我正在使用Node.js为我的AngularJS客户端提供api。 我所有的数据聚合和转换都将在Node中完成,并向客户端呈现一个扁平的JSON数据结构。 我有一个Neo4j模型,将我与我负责的应用程序联系起来,并将技术风险与所有应用程序相关联。 我有一个很好的Cypher查询,只显示我负责的应用程序的技术风险,排除所有其他没有风险的应用程序。 这里是我的查询结果的图片: Neo4j图表结果 。 这里是我的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, […]

在Neo4j中检索节点列表以及与它们直接相关的节点的ID列表

在我的数据库中,我有:用户节点,它们通过:友谊关系相关。 我想要得到这样的结构: [ { id: 1, username: "Whatever", email: "whatever@test.com" … }, [ 6, 7, 8, … ] ], [ { id: 2, username: "Another user", email: "anotheruser@test.com" … }, [ 15, 16, 17, 18, … ] ], … …其中数字是节点与a:友谊关系直接相关的节点的ID。 这个答案有一些疑问, 几乎做的工作: 我能findneo4j中两个节点之间的所有关系吗? 但是我提出的最接近的是: match p=(a:User)-[:Friendship]->(d:User) return d, reduce(nodes = [],n in nodes(p) | nodes […]

Nodejitsu支持neo4j吗?

我想用Nodejitsu来托pipe我的Node.js应用程序。 该应用程序还使用Neo4j。 Nodejitsu是否提供任何forms的支持? 或者我需要单独托pipeNeo4j(并支付所有networkingstream量)?

在哪里使用Neo4j

我其实正在尝试学习新的东西… 我使用SQL很长一段时间,使用MySQL和最近发现的面向文档的数据库。 我碰到图数据库和Neo4j,并想通过NodeJS尝试,但我真的不明白。 我应该使用Neo4j加上另一个数据库? 就像将我的数据存储到MySQL和Neo4j中的关系一样? 或者我可以使用Neo4j存储数据(如post)?