如何在arangodb中添加动态过滤器
How to add dynamic filters in arangodb
我想在 Arangodb 中处理动态查询字符串
let condition = 'FILTER u.username == '+value
if(usingPhoneNumber){
condition = 'FILTER u.phoneNumber == '+value
}
const query = aql`
FOR u in users
${condition}
RETURN u
`
如果我这样做,我会收到类似
的错误
ArangoError: AQL: 语法错误,'@value0
附近的意外绑定参数
我猜你的用户名和phone号码是字符串,所以它们必须在引号之间。
let condition = 'FILTER u.username == "' + value + '"'
if(usingPhoneNumber){
condition = 'FILTER u.phoneNumber == "' + value '"'
}
const query = aql`
FOR u in users
${condition}
RETURN u
`
你能试试
let condition = 'FILTER u.username == ${value}'
if(usingPhoneNumber){
condition = 'FILTER u.phoneNumber == ${value}'
}
假设值正在分配一些东西,我觉得这可能有效。请让我知道出现的错误,以防出现。
我建议您尝试在查询中添加条件。
FOR u in users
FILTER u.username ==${value0} OR u.phoneNumber == ${value0}
RETURN u
如果这对你有用,我想问题是 aql 格式化程序假定所有带有 ${} 的插入值都是绑定参数,将对其进行迭代而不是常量查询声明。
您当前的脚本解析为:
{
"query" : "FOR u IN users @value0 RETURN c._key",
"bindVars" : {
"value0" : "'FILTER u.username == '+value"
}
我们可以将 aql 查询传递给另一个 aql 查询
let condition = aql`FILTER u.username == ${value}`
if(usingPhoneNumber){
condition = aql`FILTER u.phoneNumber == ${value}`
}
const query = aql`
FOR u in users
${condition}
RETURN u
`
这解决了我的问题。谢谢你们的回答
我想在 Arangodb 中处理动态查询字符串
let condition = 'FILTER u.username == '+value
if(usingPhoneNumber){
condition = 'FILTER u.phoneNumber == '+value
}
const query = aql`
FOR u in users
${condition}
RETURN u
`
如果我这样做,我会收到类似
的错误ArangoError: AQL: 语法错误,'@value0
附近的意外绑定参数我猜你的用户名和phone号码是字符串,所以它们必须在引号之间。
let condition = 'FILTER u.username == "' + value + '"'
if(usingPhoneNumber){
condition = 'FILTER u.phoneNumber == "' + value '"'
}
const query = aql`
FOR u in users
${condition}
RETURN u
`
你能试试
let condition = 'FILTER u.username == ${value}'
if(usingPhoneNumber){
condition = 'FILTER u.phoneNumber == ${value}'
}
假设值正在分配一些东西,我觉得这可能有效。请让我知道出现的错误,以防出现。
我建议您尝试在查询中添加条件。
FOR u in users
FILTER u.username ==${value0} OR u.phoneNumber == ${value0}
RETURN u
如果这对你有用,我想问题是 aql 格式化程序假定所有带有 ${} 的插入值都是绑定参数,将对其进行迭代而不是常量查询声明。
您当前的脚本解析为:
{
"query" : "FOR u IN users @value0 RETURN c._key",
"bindVars" : {
"value0" : "'FILTER u.username == '+value"
}
我们可以将 aql 查询传递给另一个 aql 查询
let condition = aql`FILTER u.username == ${value}`
if(usingPhoneNumber){
condition = aql`FILTER u.phoneNumber == ${value}`
}
const query = aql`
FOR u in users
${condition}
RETURN u
`
这解决了我的问题。谢谢你们的回答