I'm trying to pass a map of key:value to arangodb query with AND checking if c.key == value AND c.key == value etc etc.
This is my code:
public async getCollectionsQuery(query: Record<any, any>): Promise<Record<any, any>[]> {
const req = query["request"]
const keys = Object.keys(req)
if (keys.length) {
let rules: string = "";
for (const [key, value] of Object.entries(req)) {
rules += "c." + key + " == \"" + value + "\" AND "
}
rules = rules.substring(0, rules.length - 5)
let q = aql`
FOR c IN ${this.mCollectionPtr}
FILTER` + rules + `
RETURN c
`
const cursor = await this.mDB.getDatabase().query(q)
return await cursor.all();
}
return []
}
I get this error
ArangoError: AQL: syntax error, unexpected [ near '[object Object]c.name == "d2382b...' at position 1:1 (while parsing)
For example a simple query key:value like this works just fine :
public async getCollectionItemsByValue(key: string, value: string): Promise<Record<any, any>> {
let q = aql`
FOR c IN ${this.mCollectionPtr}
FILTER c.${key} == ${value}
RETURN c
`
const cursor = await this.mDB.getDatabase().query(q)
return await cursor.all();
}
Can anyone suggest a way to fix this?