Динамический AQL-запрос с литеральным шаблоном ES6 - PullRequest
0 голосов
/ 18 октября 2018

Я хотел бы динамически генерировать запрос в 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, или мне нужно использовать построитель запросов

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Вы также можете использовать его, как показано ниже.

var filter = "FILTER a.name=='test'";


var query = `
   for a IN collection1
  "${filter}"
 limit 50
  return a
`;

db._query(query).toArray();

Здесь переменная фильтра javascript будет динамически заменена.Надеюсь, это поможет.

0 голосов
/ 18 октября 2018

Это работает для меня на Foxx с использованием Arango 3.3.16:

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

, тогда по вашему запросу просто добавьте

${filter}
...