diff --git a/changelog.md b/changelog.md index 277ab98..4e2cd39 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,10 @@ # Changelog +## 2024-09-05 - 5.2.9 - fix(smartdata.classes.doc) +Fixed issue with convertFilterForMongoDb to handle array operators. + +- Updated the convertFilterForMongoDb function in smartdata.classes.doc.ts to properly handle array operators like $in and $all. + ## 2024-09-05 - 5.2.8 - fix(smartdata.classes.doc) Fix key handling in convertFilterForMongoDb function diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 01f6684..581ded3 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartdata', - version: '5.2.8', + version: '5.2.9', description: 'An advanced library for NoSQL data organization and manipulation using TypeScript with support for MongoDB, data validation, collections, and custom data types.' } diff --git a/ts/smartdata.classes.doc.ts b/ts/smartdata.classes.doc.ts index b0fc70a..c853d0f 100644 --- a/ts/smartdata.classes.doc.ts +++ b/ts/smartdata.classes.doc.ts @@ -53,8 +53,12 @@ export function unI() { export const convertFilterForMongoDb = (filterArg: { [key: string]: any }) => { const convertedFilter: { [key: string]: any } = {}; + const convertFilterArgument = (keyPathArg2: string, filterArg2: any) => { - if (typeof filterArg2 === 'object') { + if (Array.isArray(filterArg2)) { + // Directly assign arrays (they might be using operators like $in or $all) + convertedFilter[keyPathArg2] = filterArg2; + } else if (typeof filterArg2 === 'object' && filterArg2 !== null) { for (const key of Object.keys(filterArg2)) { if (key.startsWith('$')) { convertedFilter[keyPathArg2] = filterArg2; @@ -70,6 +74,7 @@ export const convertFilterForMongoDb = (filterArg: { [key: string]: any }) => { convertedFilter[keyPathArg2] = filterArg2; } }; + for (const key of Object.keys(filterArg)) { convertFilterArgument(key, filterArg[key]); }