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) {