使用KOA-NEO4J库

时间:2017-02-21 14:38:05

标签: node.js neo4j koa

我正在尝试创建一个连接到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)。

任何帮助表示感谢。

1 个答案:

答案 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

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