我正在尝试创建一个连接到NEO4J实例的REST API。我使用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
我正在尝试在此示例的基础上构建一个端点,在该端点中我可以传递一个参数,该参数将在我遵循文档的cypher查询中使用,最后是以下内容。
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'
});
度量逐name.cyp
MATCH (a:metric {name: $metricname })
RETURN a AS metric
当我点击端点“myapp / metric / TestMetricName”时,我只收到一条来自Neo4j的错误消息。
ConflictError:执行Cypher时出错:错误:变量
$metricname
未定义(第1行,第24列(偏移量:23))“匹配 (a:metric {name:$ metricname})“
看起来代码没有在cypher查询中交换占位符$ metricname以获取我已经传递的值(例如TestMetricName)。
任何帮助表示感谢。
答案 0 :(得分:2)
自3.1.10-M06以来Cypher中的参数新语法($ param而不是{param})。库koa-Neo4j
的文档和示例使用最新版本。
请尝试{param}
而不是$param
。
https://github.com/neo4j/neo4j/wiki/Neo4j-3.1-changelog#310-m06