我想在Foxx中动态生成查询。 filter语句是否存在取决于请求参数。例如
//Conditionally determine if we should include a filter statement here or not
var var1=true;
getAllEntitiesThatSatisfyTheCondition = db._query(aql `
For u In ${EntityCollection}
${var1 ? `Filter u.prop == ${var1}`:``}
Return DISTINCT u._id
`).toArray();
这将返回有关绑定值的错误
syntax error, unexpected bind parameter
如何在arango中使用文字模板以这种方式构造查询,还是必须使用查询生成器?
答案 0 :(得分:1)
这在使用Arango 3.3.16的Foxx上对我有效:
var test = "1124852"
const filter = aql.literal(
test ? `AND v._key == "${test}" ` : ''
);
然后在您的查询中只需添加
${filter}
答案 1 :(得分:0)
您也可以像下面一样使用它。
var filter = "FILTER a.name=='test'";
var query = `
for a IN collection1
"${filter}"
limit 50
return a
`;
db._query(query).toArray();
此处javascript过滤器变量将被动态替换。希望这会有所帮助。