OK - This has been pounding my head all day. Here is a simple example that
has been constructed from multiple help docs, various sites on the net --
but mainly from the neo4j docs.
There is a BIG question of when you use the new Transaction vs Cypher URL
Endpoints -- this is done in 2.1.3 and 2.1.4 -- no difference.
Here is a sample using jQuery and JavaScript:
var query_PATHS = "match n where n.name = {startNodeName}
return distinct n"
var cypherRequest = {
"params" : {
"startNodeName": "Node C"
},
"query" : query_PATHS
};
$.ajax(
{
url : "http://localhost:7474/db/data/cypher",
type: "POST",
data : cypherRequest,
dataType: "json",
success: function(obj, textStatus, jqXHR)
{
console.log('::successfully executed call');
// data is object returned from server
console.log('FOUND THIS:'+obj);
console.log(obj);
console.log(textStatus);
console.log(jqXHR);
return;
nQuery.paths.reducePaths();
},
error: function(jqXHR, textStatus, errorThrown)
{
$('.progress').addClass('hidden');
$('.noResultsMessage').removeClass('hidden');
console.log(':: FAILED to executed call');
console.log(errorThrown)
console.log(jqXHR.error)
console.log(jqXHR.responseText);
}
});
--- RESPONSE ---
{
"message" : "Expected a parameter named startNodeName",
"exception" : "ParameterNotFoundException",
"fullname" : "org.neo4j.cypher.ParameterNotFoundException",
"stacktrace" : [
"org.neo4j.cypher.internal.compiler.v2_1.pipes.QueryState$$anonfun$getParam$1.apply(QueryState.scala:45)",
"org.neo4j.cypher.internal.compiler.v2_1.pipes.QueryState$$anonfun$getParam$1.apply(QueryState.scala:45)",
"scala.collection.MapLike$class.getOrElse(MapLike.scala:128)",
"scala.collection.AbstractMap.getOrElse(Map.scala:58)",
"org.neo4j.cypher.internal.compiler.v2_1.pipes.QueryState.getParam(QueryState.scala:45)",
"org.neo4j.cypher.internal.compiler.v2_1.commands.expressions.ParameterExpression.apply(ParameterExpression.scala:27)",
"org.neo4j.cypher.internal.compiler.v2_1.commands.Equals.isMatch(ComparablePredicate.scala:62)",
"org.neo4j.cypher.internal.compiler.v2_1.commands.Predicate.isTrue(Predicate.scala:34)",
"org.neo4j.cypher.internal.compiler.v2_1.pipes.FilterPipe$$anonfun$internalCreateResults$1.apply(FilterPipe.scala:32)",
"org.neo4j.cypher.internal.compiler.v2_1.pipes.FilterPipe$$anonfun$internalCreateResults$1.apply(FilterPipe.scala:32)",
"scala.collection.Iterator$$anon$14.hasNext(Iterator.scala:390)",
"scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)",
"scala.collection.Iterator$$anon$14.hasNext(Iterator.scala:388)",
"org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator$$anonfun$hasNext$1.apply$mcZ$sp(ClosingIterator.scala:37)",
"org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator$$anonfun$hasNext$1.apply(ClosingIterator.scala:34)",
"org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator$$anonfun$hasNext$1.apply(ClosingIterator.scala:34)",
"org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator$$anonfun$failIfThrows$1.apply(ClosingIterator.scala:93)",
"org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator.decoratedCypherException(ClosingIterator.scala:102)",
"org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator.failIfThrows(ClosingIterator.scala:91)",
"org.neo4j.cypher.internal.compiler.v2_1.ClosingIterator.hasNext(ClosingIterator.scala:34)",
"org.neo4j.cypher.internal.compiler.v2_1.PipeExecutionResult.hasNext(PipeExecutionResult.scala:167)",
"scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)",
"scala.collection.convert.Wrappers$IteratorWrapper.hasNext(Wrappers.scala:29)",
"org.neo4j.cypher.internal.compiler.v2_1.PipeExecutionResult$$anon$1.hasNext(PipeExecutionResult.scala:75)",
"org.neo4j.helpers.collection.ExceptionHandlingIterable$1.hasNext(ExceptionHandlingIterable.java:44)",
"org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42)",
"org.neo4j.server.rest.repr.ListRepresentation.serialize(ListRepresentation.java:62)",
"org.neo4j.server.rest.repr.Serializer.serialize(Serializer.java:75)",
"org.neo4j.server.rest.repr.MappingSerializer.putList(MappingSerializer.java:61)",
"org.neo4j.server.rest.repr.CypherResultRepresentation.serialize(CypherResultRepresentation.java:83)",
"org.neo4j.server.rest.repr.MappingRepresentation.serialize(MappingRepresentation.java:41)",
"org.neo4j.server.rest.repr.OutputFormat.assemble(OutputFormat.java:224)",
"org.neo4j.server.rest.repr.OutputFormat.formatRepresentation(OutputFormat.java:156)",
"org.neo4j.server.rest.repr.OutputFormat.response(OutputFormat.java:139)",
"org.neo4j.server.rest.repr.OutputFormat.ok(OutputFormat.java:71)",
"org.neo4j.server.rest.web.CypherService.cypher(CypherService.java:122)",
"java.lang.reflect.Method.invoke(Method.java:606)",
"org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:139)",
"java.lang.Thread.run(Thread.java:744)" ]
--- END RESPONSE ---
So the good part is that it IS detecting that the parameter is not being
substituted in the query. Feels like it is not detecting the variable and
value in the JSON. But I have tried this like 30 different ways - same
results - no success.
And Adding a to the header of the AJAX request such as:
contentType: "application/json;charset=utf-8",
Results in a:
No 'Access-Control-Allow-Origin' header is present on the requested
resource.
So I am pretty sure this is NOT a simple header problem - seems to be
either a JSON structure / value problem - or a parsing problem in neo4j...
ANY THOUGHTS?!?!?!
Dave
--
You received this message because you are subscribed to the Google Groups
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.