0

我正在使用已经注入的值重写查询以传递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

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

(请注意,我确信查询是正确编写的,因为当我使用 JS 直接注入参数进行查询时${value}

4

1 回答 1

0

您可以将两个字符串与+. 后面的正则表达式=~只是一个字符串。

因此,工作 Cypher 将是:

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

或者,您可以在 JavaScript 中组装表达式字符串:

search = 'foo'
params = {
  value: `${search}.*`
}
WHERE node.property =~ $value
于 2022-01-18T13:16:43.993 回答