可以将查询参数用作动态过滤器吗?考虑以下功能:
const propFilter = (session, prop, filter) => session.run(`
MATCH (a:Animal)
WHERE a.{prop} = {filter}
RETURN a
`, {prop, filter})
理想情况下,它将是通用属性过滤器。例如:
propFilter(session, 'name', 'Milo') // {name: 'Milo', species: 'Dog'...}
// runs this query
MATCH (a:Animal)
WHERE a.name = 'Milo'
RETURN a
propFilter(session, 'age', 27) // {age: 27, species: 'Elephant'...}
// runs this query
MATCH (a:Animal)
WHERE a.age = 27
RETURN a
基本上,我希望驱动程序将参数智能地包含在
WHERE
子句中,保留参数的类型(例如,它知道'Milo'
是第一个查询中的字符串,而27
是第二个查询中的数字。我还想避免查询中的字符串插值:
// bad, but does what I want
(session, prop, value) => session.run(`
MATCH
(a:Animal {${prop}: {value}})
RETURN a
`, { value })
最佳答案
这可能是您要寻找的:
const propFilter = (session, prop, filter) => session.run(`
MATCH (a:Animal)
WHERE a[{prop}] = {filter}
RETURN a
`, {prop: prop, filter: filter})
关于javascript - 如何使用JS驱动程序向Cypher查询添加动态过滤器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41537022/