templates - 使用 ES6 文字模板的动态 AQL 查询
问题描述
我想在 Foxx 中动态生成查询。过滤器语句是否存在取决于请求参数。例如
//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 中以这种方式使用文字模板构造查询,或者我必须使用查询生成器?
解决方案
这适用于我在 Foxx 上使用 Arango 3.3.16:
var test = "1124852"
const filter = aql.literal(
test ? `AND v._key == "${test}" ` : ''
);
然后在您的查询中添加
${filter}