首页 > 解决方案 > 使用 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 中以这种方式使用文字模板构造查询,或者我必须使用查询生成器?

标签: templatesecmascript-6arangodbaql

解决方案


这适用于我在 Foxx 上使用 Arango 3.3.16:

var test = "1124852" 
const filter = aql.literal(
    test ? `AND v._key == "${test}" ` : ''
  );

然后在您的查询中添加

${filter}

推荐阅读