Fix in filter array parsing

This commit is contained in:
rijkvanzanten
2020-10-19 11:43:32 -04:00
parent a22daabbe0
commit 16cd8838a9
2 changed files with 8 additions and 1 deletions

View File

@@ -7,7 +7,10 @@ export function parseFilter(filter: Filter, accountability: Accountability | nul
if (val === 'true') return true;
if (val === 'false') return false;
if (key === '_in' || key === '_nin') return toArray(val);
if (key === '_in' || key === '_nin') {
if (typeof val === 'string' && val.includes(',')) return val.split(',');
else return toArray(val);
}
if (val === '$NOW') return new Date();
if (val === '$CURRENT_USER') return accountability?.user || null;

View File

@@ -1,6 +1,7 @@
import { Accountability, Query, Sort, Filter, Meta } from '../types';
import logger from '../logger';
import { parseFilter } from '../utils/parse-filter';
import { flatten } from 'lodash';
export function sanitizeQuery(
rawQuery: Record<string, any>,
@@ -75,6 +76,9 @@ function sanitizeFields(rawFields: any) {
if (typeof rawFields === 'string') fields = rawFields.split(',');
else if (Array.isArray(rawFields)) fields = rawFields as string[];
// Case where array item includes CSV (fe fields[]=id,name):
fields = flatten(fields.map((field) => (field.includes(',') ? field.split(',') : field)));
return fields;
}