是否可以将查询参数用作动态过滤器?考虑以下功能:
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
基本上我希望驱动程序智能地将params分配到WHERE
子句中,保留params的类型(例如,它知道'Milo'
是第一个查询中的字符串,{{{ 1}}是第二个中的数字。
我还想避免查询中的字符串插值:
27
答案 0 :(得分:2)
这可能就是你要找的东西:
const propFilter = (session, prop, filter) => session.run(`
MATCH (a:Animal)
WHERE a[{prop}] = {filter}
RETURN a
`, {prop: prop, filter: filter})