Не удается передать параметры с помощью библиотеки KOA-NEO4J.

Я пытаюсь создать REST API, который подключается к экземпляру NEO4J. В качестве основы я использую библиотеку koa-neo4j (https://github.com/assister-ai/koa-neo4j-starter-kit).

Этот первый пример ниже работает нормально. Когда я попадаю в конечную точку «myapp/metric», я получаю ожидаемый результат из базы данных.

Index.js

//Return all metrics from the database
app.defineAPI({
    method: 'GET',
    route: '/api/v1/imm/metric',
    cypherQueryFile: './src/api/v1/imm/metric/metric.cyp'
});

metric.cyp

MATCH (a:metric)
RETURN a AS metric

Я пытаюсь использовать этот пример, создавая конечную точку, где я могу передать параметр, который будет использоваться в шифрованном запросе. Я следил за документацией и получил следующее.

Index.js

//Return all metrics from the database matching a specific metric name
app.defineAPI({
    method: 'GET',
    route: '/api/v1/imm/metric/:metricname',
    cypherQueryFile: './src/api/v1/imm/metric/metric-by-name.cyp'
});

метрика по имени.cyp

MATCH (a:metric {name: $metricname })
RETURN a AS metric

Когда я нажимаю конечную точку «myapp/metric/TestMetricName», я просто получаю сообщение об ошибке, которое исходит от Neo4j.

ConflictError: ошибка при выполнении Cypher: Ошибка: переменная $metricname не определена (строка 1, столбец 24 (смещение: 23)) «MATCH (a: metric {name: $metricname})»

Похоже, код не заменяет заполнитель $metricname в шифрованном запросе на значение, которое я передал (например, TestMetricName).

Любая помощь приветствуется.


person n4nite    schedule 21.02.2017    source источник
comment
Какую версию neo4j вы используете?   -  person stdob--    schedule 21.02.2017
comment
Neo4j Community Edition 3.0.5 работает на GrapheneDB.com   -  person n4nite    schedule 21.02.2017
comment
Попробуйте {metricname} вместо $metricname   -  person stdob--    schedule 21.02.2017
comment
Я получаю тот же результат --> ConflictError: ошибка при выполнении Cypher: Ошибка: переменная metricname не определена (строка 1, столбец 24 (смещение: 23)) MATCH (a: metric {name: metricname})   -  person n4nite    schedule 21.02.2017
comment
Извини, я виноват. Я заменил $metricname на metricname вместо {metricname}, как вы предложили (например, я пропустил фигурные скобки, когда впервые внес изменения). Теперь он работает отлично, так что большое спасибо. Знаете ли вы, устарела ли документация или я просто что-то упустил, включив сначала $   -  person n4nite    schedule 21.02.2017


Ответы (1)


Начиная с 3.1.10-M06 новый синтаксис параметров в Cypher ($param вместо {param}). В документации и примере для библиотеки koa-Neo4j используется последняя версия.

Так что попробуйте {param} вместо $param.

https://github.com/neo4j/neo4j/wiki/Neo4j-3.1-changelog#310-m06

https://github.com/neo4j/neo4j/pull/7558

person stdob--    schedule 21.02.2017