ArangoDB: используйте объекты в качестве фильтра и создайте AQL с помощью конструктора aql

У меня есть объект вроде этого

{
prop1: true,
prop2: "string",
prop3: number
}

Я передаю этот объект Foxx, чтобы использовать его свойства в качестве фильтров для запроса arango. Я использую построитель запросов из следующих

var qb = require('aqb');
var querybuilder=qb.for("doc").in(docCollection);
//Loop through the object property
 for(var property in object){
 if (object.hasOwnProperty(property)){

   var value= object[property];
   var key="doc."+property;
 querybuilder=querybuilder.filter(qb.eq(key,value));
 }
}

Но это не сработает, потому что qb.eq(key,value) не принимается qb.eq(key,qb.str(value)), тогда это нормально, но теперь фильтр фильтрует только значение строкового типа.

Как я могу создать запрос, который фильтрует, используя точный тип значения в объекте фильтра?


person Loredra L    schedule 18.09.2018    source источник


Ответы (1)


Боже, я решил эту проблему буквально через 3 секунды после публикации. Все, что мне нужно сделать, это сделать такое преобразование

qb.eq(key,qb(value))

А все остальное сделает arango.

person Loredra L    schedule 18.09.2018
comment
Имейте в виду, что конструктор aql больше не поддерживается, и ArangoDB не рекомендует больше использовать эту библиотеку. Ознакомьтесь с документацией по альтернативному обработчику шаблонов aql docs.arangodb. ru / 3.4 / Manual / Foxx / Guides / Queries.html - person mpv89; 18.09.2018