Neo4j - 通过 JavaScript 驱动程序传递字符串参数不起作用
Neo4j - passing string parameters through JavaScript driver doesn't work
我正在用已经注入的值重写 queries 以传递 query
和 params
对象。
使用整数的查询工作正常(我需要使用 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
我正在用已经注入的值重写 queries 以传递 query
和 params
对象。
使用整数的查询工作正常(我需要使用 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