Skip to content

Commit 891577e

Browse files
committed
fix: $in operator support
1 parent 740c98f commit 891577e

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

src/index.js

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -446,8 +446,13 @@
446446
dataValue = ''
447447
let logicalOperator = query[i].logicalOperator || 'and'
448448
let queryValues = query[i].value
449+
450+
let queryIsArray = false
449451
if (!Array.isArray(queryValues))
450452
queryValues = [queryValues]
453+
else
454+
queryIsArray = true
455+
451456

452457
let queryStatus = false
453458
for (let queryValue of queryValues) {
@@ -462,7 +467,6 @@
462467
dataValue = new Date(dataValue)
463468
queryValue = new Date(queryValue)
464469
}
465-
466470
switch (query[i].operator) {
467471
case '$includes':
468472
case 'includes':
@@ -506,8 +510,11 @@
506510
queryStatus = true
507511
break;
508512
case '$in':
509-
if (Array.isArray(dataValue) && dataValue.some(x => queryValue.includes(x)))
510-
queryStatus = true
513+
if (Array.isArray(dataValue)) {
514+
queryStatus = dataValue.some(element => queryValue.includes(element));
515+
} else {
516+
queryStatus = queryValue.includes(dataValue);
517+
}
511518
break;
512519
case '$nin':
513520
if (Array.isArray(dataValue)) {
@@ -532,17 +539,19 @@
532539
queryStatus = true
533540
break;
534541
}
535-
536-
switch (logicalOperator) {
537-
case 'and':
538-
if (queryStatus == false)
539-
return false
540-
break;
541-
// case 'or':
542-
// if (queryStatus == true)
543-
// queryResult = queryStatus
544-
// break;
545-
}
542+
if (!queryIsArray || query[i].operator === "$nin") {
543+
switch (logicalOperator) {
544+
case 'and':
545+
if (queryStatus == false)
546+
return false
547+
break;
548+
// case 'or':
549+
// if (queryStatus == true)
550+
// queryResult = queryStatus
551+
// break;
552+
}
553+
} else if (queryStatus && query[i].operator === "$in")
554+
return true
546555
queryResult = queryStatus
547556
}
548557
}

0 commit comments

Comments
 (0)