我想在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 附近出现意外绑定参数
我们可以将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
`
这解决了我的问题。谢谢大家的回答
我猜你的用户名和电话号码是字符串,所以它们必须在引号之间。
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"
}