Neo4j - 通过 JavaScript 驱动程序传递字符串参数不起作用

Neo4j - passing string parameters through JavaScript driver doesn't work

我正在用已经注入的值重写 queries 以传递 queryparams 对象。

使用整数的查询工作正常(我需要使用 neo4j 的 int 翻译):

...
ID(node)=$nodeId
...
LIMIT $fetchLimit
import { int } from 'neo4j-driver'
...
params = {
  nodeId: int(nodeId)
  fetchLimit: int(fetchLimit)
}

在某些查询中,我正在搜索字符串,但我没有使用“正常”字符串搜索

WHERE node.property=$value       <-- "normal" search
WHERE node.property=~"$value.*"  <-- my search

在这种情况下传递参数不起作用。

我有一种感觉,当我通过 value: 'foo' 时,neo4j 解析如下:

WHERE node.property=~"$value.*"
...
value: 'foo'

*(injects parameters)*

WHERE node.property=~"'foo'.*"   <-- these inner quotation marks shouldn't be there

如何将字符串传递给此查询并期望得到正确的结果?

(注意,我确定query写对了,因为当我直接注入参数查询使用JS的${value}

您可以使用 + 合并两个字符串。 =~后面的正则表达式就是一个字符串。

因此,工作 Cypher 将是:

WHERE node.property =~ $value + ".*"

或者,您可以 assemble JavaScript 中的表达式字符串:

search = 'foo'
params = {
  value: `${search}.*`
}
WHERE node.property =~ $value