2011-06-20 31 views
0

從任何給定的節點開始,我想運行遍歷器,直到它碰到具有「contentpage」類型的節點(所有節點都具有類型屬性)。Neo4j Traverser - 只需獲取特定類型的項目

我用下面的橫移

{ 
    "order":"depth first", 
    "uniqueness" : "node global", 
    "relationships":[ 
     {"type":"CONTAINS","direction":"in"}, 
     {"type":"HAS","direction":"in"} 
    ], 
    "prune evaluator":{"language":"javascript","body":"position.endNode().getProperty('type')!='contentpage';"}, 
    "max depth":10000000 
} 

嘗試過,但我得到的是一個HTTP錯誤500 什麼想法?

編輯:這是一個堆棧跟蹤(我已經修剪了一點,因爲它是巨大的)

Problem accessing /db/data/node/782350/traverse/node. Reason: 

    javax.script.ScriptException: sun.org.mozilla.javascript.WrappedException: Wrapped org.neo4j.graphdb.NotFoundException: type property not found for NodeImpl#782348. (<Unknown Source>#1) in <Unknown Source> at line number 1 
Caused by: 

org.neo4j.server.rest.domain.EvaluationException: javax.script.ScriptException: sun.org.mozilla.javascript.WrappedException: Wrapped org.neo4j.graphdb.NotFoundException: type property not found for NodeImpl#782348. (<Unknown Source>#1) in <Unknown Source> at line number 1 
    at org.neo4j.server.rest.domain.EvaluatorFactory$CompiledScriptExecutor.eval(EvaluatorFactory.java:183) 
    at org.neo4j.server.rest.domain.EvaluatorFactory$ScriptedPruneEvaluator.pruneAfter(EvaluatorFactory.java:241) 
    at org.neo4j.kernel.impl.traversal.TraversalDescriptionImpl$WrappedPruneEvaluator.evaluate(TraversalDescriptionImpl.java:239) 
    at org.neo4j.kernel.impl.traversal.MultiEvaluator.evaluate(MultiEvaluator.java:41) 
    at org.neo4j.kernel.impl.traversal.TraversalBranchImpl.initialize(TraversalBranchImpl.java:93) 
    at org.neo4j.kernel.impl.traversal.TraversalBranchImpl.next(TraversalBranchImpl.java:112) 
    at org.neo4j.kernel.impl.traversal.StartNodeTraversalBranch.next(StartNodeTraversalBranch.java:50) 
    at org.neo4j.kernel.PreorderDepthFirstSelector.next(PreorderDepthFirstSelector.java:48) 
    at org.neo4j.kernel.impl.traversal.TraverserImpl$TraverserIterator.fetchNextOrNull(TraverserImpl.java:127) 
    at org.neo4j.kernel.impl.traversal.TraverserImpl$TraverserIterator.fetchNextOrNull(TraverserImpl.java:94) 
    at org.neo4j.helpers.collection.PrefetchingIterator.hasNext(PrefetchingIterator.java:55) 
    at org.neo4j.server.rest.web.DatabaseActions.traverse(DatabaseActions.java:922) 
    at org.neo4j.server.rest.web.RestfulGraphDatabase.traverse(RestfulGraphDatabase.java:641) 
    at sun.reflect.GeneratedMethodAccessor99.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 

回答

2

首先,看來你應該有

"uniqueness" : "node global" 

一般情況下,你可以不發送空值。只要不設置,如果你想要的默認。查看更多信息:Neo4j REST API

編輯更新的問題:

所以異常說:

NotFoundException: type property not found for NodeImpl 

其中的原因是:

position.endNode().getProperty('type') 

爲了避免這種情況,對設定的默認值財產,例如:

getProperty('type','') 
+0

我刪除了空值並添加了唯一性,但它仍然無效。 – prehfeldt

+0

你可以用當前請求更新問題嗎?它仍然給你一個HTTP 500? – nawroth

+0

我更新了它。而且我仍然得到一個HTTP 500. – prehfeldt

0

您可以查看data/log/*。log和data/messages.log文件以獲取可能的堆棧跟蹤嗎?

謝謝

+0

我現在有一個堆棧跟蹤,請參閱我的原始帖子。 – prehfeldt

+0

你看過ID爲782348的節點嗎?如果那個節點真的有類型屬性?堆棧跟蹤表示它沒有。 –

+0

它絕對有一個類型屬性。 – prehfeldt