filter bug fix
This commit is contained in:
@@ -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<string>): 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<string>): 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 = "";
|
||||
|
||||
Reference in New Issue
Block a user