From a8229debcb247daba52c913d0b35b273c6269874 Mon Sep 17 00:00:00 2001 From: Akhil Meka Date: Mon, 22 Sep 2025 16:22:41 +0530 Subject: [PATCH] feat: exclude some filter fileds from getting converted to ObjectId --- src/utils/queryParser.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/utils/queryParser.ts b/src/utils/queryParser.ts index 7218738..f28f3e0 100644 --- a/src/utils/queryParser.ts +++ b/src/utils/queryParser.ts @@ -2,12 +2,17 @@ import mongoose from "mongoose"; type MongoFilter = Record; -function convertValue(value: string) { +const objectIdConversion = ["taggedUsers"]; + +function convertValue(field: string, value: string) { if (!isNaN(Number(value))) { return Number(value); } else if (!isNaN(new Date(value).getTime())) { return new Date(value); - } else if (mongoose.Types.ObjectId.isValid(value)) { + } else if ( + mongoose.Types.ObjectId.isValid(value) && + !objectIdConversion.includes(field) + ) { return new mongoose.Types.ObjectId(value); } else if (value === "true") { return true; @@ -35,7 +40,9 @@ function formulaToMongoFilter(formula: string): MongoFilter { .map((v) => v.trim().replace(/^['"]|['"]$/g, "")); // Convert each value to appropriate type - const parsedValues = valueArray.map((value) => convertValue(value)); + const parsedValues = valueArray.map((value) => + convertValue(trimmedField, value) + ); // If no operator or equals operator, use $in if (!operator || operator === "=") { @@ -63,7 +70,7 @@ function formulaToMongoFilter(formula: string): MongoFilter { if (trimmedField === "tenantId") return {}; // Convert value to appropriate type (date or number if possible) - let parsedValue: any = convertValue(trimmedValue); + let parsedValue: any = convertValue(trimmedField, trimmedValue); // Convert operator to MongoDB operator switch (operator) {