Skip to content

Commit baddfe7

Browse files
Admitting multiple $or in querystring.
1 parent a3a2c71 commit baddfe7

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

lib/mapper/filters.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ function filters(query, options) {
1414
delete query.start_at
1515
delete query.end_at
1616
delete query.period
17+
let or_count = 0
1718
for (const elem in query) {
1819
if (query[elem] instanceof Array) {
1920
query[elem].forEach(function (param) {
@@ -22,7 +23,18 @@ function filters(query, options) {
2223
} else {
2324
if (query[elem] instanceof Object) {
2425
} else if (query[elem].includes(',')) {
25-
result['$or'] = result['$or'].concat(splitByCommas(elem, query[elem]))
26+
if (or_count === 0){
27+
result['$or'] = result['$or'].concat(splitByCommas(elem, query[elem]))
28+
}
29+
else if (or_count === 1) {
30+
result['$and'].push({'$or': result['$or']})
31+
result['$and'].push({'$or': splitByCommas(elem, query[elem])})
32+
result['$or'] = []
33+
}
34+
else{
35+
result['$and'].push({'$or': splitByCommas(elem, query[elem])})
36+
}
37+
or_count++
2638
} else {
2739
Object.assign(result, processQuery(elem, query[elem]))
2840
}

0 commit comments

Comments
 (0)