diff --git a/src/utils/queryParser.ts b/src/utils/queryParser.ts index 76549d5..f2883e7 100644 --- a/src/utils/queryParser.ts +++ b/src/utils/queryParser.ts @@ -10,6 +10,11 @@ type ParsedQuery = Array< function convertValue(value: any) { if (mongoose.Types.ObjectId.isValid(value)) { return mongoose.Types.ObjectId.createFromHexString(value); + } else if ( + !isNaN(parseInt(value)) && + parseInt(value).toString().length == value.toString().length + ) { + return parseInt(value); } else if (!isNaN(Date.parse(value))) { return new Date(value); } else { @@ -58,8 +63,7 @@ export function parse(query: string, validFields: Array): ParsedQuery { if (i == query.length - 1) token += char; value = token; - if (validFields.includes(field)) - result.push({ [field]: { [op]: convertValue(value) } }); + result.push({ [field]: { [op]: convertValue(value) } }); token = ""; field = ""; @@ -82,10 +86,9 @@ export function parse(query: string, validFields: Array): ParsedQuery { if (char === "]") { valueArr.push(token); - if (validFields.includes(field)) - result.push({ - [field]: { [op === "$eq" ? "$in" : "$nin"]: valueArr }, - }); + result.push({ + [field]: { [op === "$eq" ? "$in" : "$nin"]: valueArr }, + }); token = ""; field = "";