Skip to content

Commit 3e16d90

Browse files
fix(cursor): Enhance baseQuery merging logic with detailed logging for decoded queries
1 parent f1cf6e4 commit 3e16d90

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

src/shared/plugins/cursor.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,25 @@ export function mongooseCursorPaginate<T>(schema: Schema<T>) {
8888
}
8989
}
9090

91-
logger.debug({ baseQuery });
92-
baseQuery = { ...baseQuery, ...decoded.query };
91+
logger.debug({ baseQueryBeforeMerge: baseQuery, decodedQuery: decoded.query });
92+
93+
// Deep merge decoded.query ke baseQuery dengan handling khusus untuk aggregation
94+
for (const key in decoded.query) {
95+
if (key === '_id') {
96+
// Merge _id conditions secara khusus
97+
baseQuery._id = baseQuery._id
98+
? { ...baseQuery._id, ...decoded.query._id }
99+
: decoded.query._id;
100+
} else if (key !== 'sort') {
101+
// Skip $or karena sudah dibuat di loop sebelumnya
102+
// Untuk field lain, merge langsung
103+
if (key !== '$or') {
104+
baseQuery[key] = decoded.query[key];
105+
}
106+
}
107+
}
108+
109+
logger.debug({ baseQueryAfterMerge: baseQuery });
93110
} catch (e: any) {
94111
if (onError) onError(e);
95112
logger.debug({ e, stack: e.stack });

0 commit comments

Comments
 (0)