@geekbears/gb-mongoose-query-parser 1.3.17 → 1.3.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/query-parser-helper.js +25 -15
- package/lib/test.spec.js +16 -8
- package/package.json +6 -6
|
@@ -245,27 +245,37 @@ class QueryParser {
|
|
|
245
245
|
for (const [i, [key, value]] of Object.entries(obj).entries()) {
|
|
246
246
|
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
247
247
|
const validId = (0, mongoose_1.isObjectIdOrHexString)(value);
|
|
248
|
-
if (validId &&
|
|
249
|
-
|
|
248
|
+
// if (validId && isMongoId(value)) {
|
|
249
|
+
// obj[key] = Types.ObjectId.createFromHexString(value.toString());
|
|
250
|
+
// // console.log('value :>> ', obj[key]);
|
|
251
|
+
// console.log('valid', value);
|
|
252
|
+
// }
|
|
253
|
+
// if (typeof value === 'object' && !validId) {
|
|
254
|
+
// console.log('walking', value);
|
|
255
|
+
// if (i % 1000 === 0) {
|
|
256
|
+
// setImmediate(() => {
|
|
257
|
+
// walk(obj[key]);
|
|
258
|
+
// });
|
|
259
|
+
// } else walk(obj[key]);
|
|
260
|
+
// } else {
|
|
261
|
+
// console.log('value as is ', value);
|
|
262
|
+
// obj[key] = value;
|
|
263
|
+
// }
|
|
264
|
+
// console.log(obj);
|
|
265
|
+
// console.log('HERE', key);
|
|
266
|
+
// console.log('obj :>> ', obj);
|
|
267
|
+
if (typeof value === 'object' && !validId) {
|
|
268
|
+
// console.log('walking......', key);
|
|
269
|
+
walk(obj[key]);
|
|
250
270
|
}
|
|
251
|
-
else
|
|
252
|
-
|
|
253
|
-
setImmediate(() => {
|
|
254
|
-
walk(obj[key]);
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
else
|
|
258
|
-
walk(obj[key]);
|
|
259
|
-
}
|
|
260
|
-
// if (typeof value === 'object') {
|
|
261
|
-
// console.log('walking......');
|
|
262
|
-
// walk(obj[key]);
|
|
263
|
-
// } else obj[key] = Types.ObjectId.isValid(value) ? new Types.ObjectId(value) : value;
|
|
271
|
+
else
|
|
272
|
+
obj[key] = validId ? mongoose_1.Types.ObjectId.createFromHexString(value.toString()) : value;
|
|
264
273
|
}
|
|
265
274
|
}
|
|
266
275
|
return obj;
|
|
267
276
|
};
|
|
268
277
|
const res = walk({ ...filter });
|
|
278
|
+
// console.log('res', res.filter);
|
|
269
279
|
return res;
|
|
270
280
|
}
|
|
271
281
|
}
|
package/lib/test.spec.js
CHANGED
|
@@ -14,7 +14,6 @@ const chai_1 = require("chai");
|
|
|
14
14
|
const _1 = require("./");
|
|
15
15
|
const mongoose_1 = require("mongoose");
|
|
16
16
|
const lodash_1 = require("lodash");
|
|
17
|
-
const class_validator_1 = require("class-validator");
|
|
18
17
|
let Tester = class Tester {
|
|
19
18
|
generalParse() {
|
|
20
19
|
let parser = new _1.MongooseQueryParser();
|
|
@@ -172,15 +171,22 @@ let Tester = class Tester {
|
|
|
172
171
|
};
|
|
173
172
|
let parsed = parser.parse({ filter });
|
|
174
173
|
chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(parsed.filter['_org']));
|
|
175
|
-
chai_1.assert.isOk((0, class_validator_1.isMongoId)(parsed.filter['_org']));
|
|
176
174
|
chai_1.assert.isObject(parsed.filter);
|
|
177
175
|
chai_1.assert.isObject(parsed.filter['dailyRate']);
|
|
178
176
|
chai_1.assert.isObject(parsed.filter['_org2']);
|
|
179
177
|
const transformedFilter = _1.QueryParser.transformFilter(parsed);
|
|
180
178
|
chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedFilter.filter._org));
|
|
181
|
-
chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformedFilter.filter._org));
|
|
182
179
|
chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedFilter.filter._org2['$in'][0]));
|
|
183
|
-
|
|
180
|
+
}
|
|
181
|
+
transformFilter2() {
|
|
182
|
+
let parser = new _1.MongooseQueryParser();
|
|
183
|
+
const filter = {
|
|
184
|
+
_tags: { $in: ['66885d0e304ef564c27f5315'] },
|
|
185
|
+
};
|
|
186
|
+
const query = { filter, populate: 'tags' };
|
|
187
|
+
let parsed = parser.parse(query);
|
|
188
|
+
const transformedFilter = _1.QueryParser.transformFilter(parsed);
|
|
189
|
+
chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedFilter.filter._tags['$in'][0]));
|
|
184
190
|
}
|
|
185
191
|
transformFilterAggregate() {
|
|
186
192
|
// let parser = new MongooseQueryParser();
|
|
@@ -220,13 +226,10 @@ let Tester = class Tester {
|
|
|
220
226
|
};
|
|
221
227
|
const transformedMatchFilter = _1.QueryParser.transformFilter(matchStage);
|
|
222
228
|
chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedMatchFilter.$match._id));
|
|
223
|
-
chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformedMatchFilter.$match._id));
|
|
224
229
|
const transformedMatchInFilter = _1.QueryParser.transformFilter(matchStageIn);
|
|
225
230
|
chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedMatchInFilter.$match._id.$in[0]));
|
|
226
|
-
chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformedMatchInFilter.$match._id.$in[0]));
|
|
227
231
|
const transformedMatchNinFilter = _1.QueryParser.transformFilter(matchStageNin);
|
|
228
232
|
chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedMatchNinFilter.$match._id.$nin[0]));
|
|
229
|
-
chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformedMatchNinFilter.$match._id.$nin[0]));
|
|
230
233
|
const transformLookupFilter = _1.QueryParser.transformFilter(lookupStage);
|
|
231
234
|
chai_1.assert.isObject(transformLookupFilter);
|
|
232
235
|
const transformComplexLookupFilter = _1.QueryParser.transformFilter(lookupStageComplex);
|
|
@@ -234,7 +237,6 @@ let Tester = class Tester {
|
|
|
234
237
|
chai_1.assert.isArray(transformComplexLookupFilter.$lookup.pipeline);
|
|
235
238
|
chai_1.assert.lengthOf(transformComplexLookupFilter.$lookup.pipeline, 3);
|
|
236
239
|
chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformComplexLookupFilter.$lookup.pipeline[0].$match.$expr.$eq[0]));
|
|
237
|
-
chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformComplexLookupFilter.$lookup.pipeline[0].$match.$expr.$eq[0]));
|
|
238
240
|
}
|
|
239
241
|
};
|
|
240
242
|
__decorate([
|
|
@@ -303,6 +305,12 @@ __decorate([
|
|
|
303
305
|
__metadata("design:paramtypes", []),
|
|
304
306
|
__metadata("design:returntype", void 0)
|
|
305
307
|
], Tester.prototype, "transformFilter", null);
|
|
308
|
+
__decorate([
|
|
309
|
+
(0, mocha_1.test)('should use transformFilter in FilterQuery 2'),
|
|
310
|
+
__metadata("design:type", Function),
|
|
311
|
+
__metadata("design:paramtypes", []),
|
|
312
|
+
__metadata("design:returntype", void 0)
|
|
313
|
+
], Tester.prototype, "transformFilter2", null);
|
|
306
314
|
__decorate([
|
|
307
315
|
(0, mocha_1.test)('should use transformFilter in Aggregate'),
|
|
308
316
|
__metadata("design:type", Function),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geekbears/gb-mongoose-query-parser",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.19",
|
|
4
4
|
"description": "Convert url query string to MongooseJs friendly query object including advanced filtering, sorting, population, deep population, string template, type casting and many more...",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -32,18 +32,18 @@
|
|
|
32
32
|
"homepage": "https://gitlab.com/geekbears/utilities/backend/gb-mongoose-query-parser#readme",
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@testdeck/mocha": "^0.3.3",
|
|
35
|
-
"@types/chai": "^4.3.
|
|
35
|
+
"@types/chai": "^4.3.17",
|
|
36
36
|
"@types/lodash": "^4.17.7",
|
|
37
37
|
"@types/mocha": "^10.0.7",
|
|
38
|
-
"@types/node": "^
|
|
38
|
+
"@types/node": "^22.4.0",
|
|
39
39
|
"@types/qs": "^6.9.15",
|
|
40
|
-
"chai": "^4.
|
|
41
|
-
"mocha": "^10.
|
|
40
|
+
"chai": "^4.5.0",
|
|
41
|
+
"mocha": "^10.7.3",
|
|
42
42
|
"prettier": "^3.3.3",
|
|
43
43
|
"rimraf": "^6.0.1",
|
|
44
44
|
"ts-node": "^10.9.2",
|
|
45
45
|
"tslint": "^6.1.3",
|
|
46
|
-
"typescript": "^5.5.
|
|
46
|
+
"typescript": "^5.5.4"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"lodash": "^4.17.21",
|