@geekbears/gb-mongoose-query-parser 1.3.9 → 1.3.11
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 +16 -5
- package/lib/test.spec.js +26 -0
- package/package.json +1 -1
|
@@ -336,14 +336,25 @@ exports.QueryParser = QueryParser;
|
|
|
336
336
|
*/
|
|
337
337
|
function transformFilter(filter) {
|
|
338
338
|
var walk = function (obj) {
|
|
339
|
-
|
|
339
|
+
var _loop_1 = function (key) {
|
|
340
340
|
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
341
341
|
var value = obj[key];
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
342
|
+
var validId = (0, mongoose_1.isValidObjectId)(value);
|
|
343
|
+
if (validId)
|
|
344
|
+
obj[key] = mongoose_1.Types.ObjectId.createFromHexString(value.toString());
|
|
345
|
+
else {
|
|
346
|
+
setTimeout(function () {
|
|
347
|
+
walk(obj[key]);
|
|
348
|
+
}, 0);
|
|
349
|
+
}
|
|
350
|
+
// if (typeof value === 'object') {
|
|
351
|
+
// console.log('walking......');
|
|
352
|
+
// walk(obj[key]);
|
|
353
|
+
// } else obj[key] = Types.ObjectId.isValid(value) ? new Types.ObjectId(value) : value;
|
|
346
354
|
}
|
|
355
|
+
};
|
|
356
|
+
for (var key in obj) {
|
|
357
|
+
_loop_1(key);
|
|
347
358
|
}
|
|
348
359
|
return obj;
|
|
349
360
|
};
|
package/lib/test.spec.js
CHANGED
|
@@ -48,6 +48,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
48
48
|
var mocha_1 = require("@testdeck/mocha");
|
|
49
49
|
var chai_1 = require("chai");
|
|
50
50
|
var _1 = require("./");
|
|
51
|
+
var mongoose_1 = require("mongoose");
|
|
51
52
|
var lodash_1 = require("lodash");
|
|
52
53
|
var Tester = /** @class */ (function () {
|
|
53
54
|
function Tester() {
|
|
@@ -178,6 +179,25 @@ var Tester = /** @class */ (function () {
|
|
|
178
179
|
var parsed = parser.parse(query);
|
|
179
180
|
chai_1.assert.isOk((0, lodash_1.isEqual)(parsed.filter, preDefined));
|
|
180
181
|
};
|
|
182
|
+
Tester.prototype.parseId = function () {
|
|
183
|
+
var parser = new _1.MongooseQueryParser();
|
|
184
|
+
var filter = {
|
|
185
|
+
dailyRate: { $gte: 0, $lte: 60 },
|
|
186
|
+
geolocation: {
|
|
187
|
+
$near: {
|
|
188
|
+
$geometry: { type: 'Point', coordinates: [-122.16106, 37.37646] },
|
|
189
|
+
$minDistance: 0,
|
|
190
|
+
$maxDistance: 10,
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
unavailableDates: { $nin: [] },
|
|
194
|
+
_org: new mongoose_1.Types.ObjectId(),
|
|
195
|
+
};
|
|
196
|
+
var parsed = parser.parse({ filter: filter });
|
|
197
|
+
chai_1.assert.isOk((0, mongoose_1.isValidObjectId)(parsed.filter['_org']));
|
|
198
|
+
chai_1.assert.isObject(parsed.filter);
|
|
199
|
+
chai_1.assert.isObject(parsed.filter['dailyRate']);
|
|
200
|
+
};
|
|
181
201
|
__decorate([
|
|
182
202
|
(0, mocha_1.test)('should parse general query'),
|
|
183
203
|
__metadata("design:type", Function),
|
|
@@ -232,6 +252,12 @@ var Tester = /** @class */ (function () {
|
|
|
232
252
|
__metadata("design:paramtypes", []),
|
|
233
253
|
__metadata("design:returntype", void 0)
|
|
234
254
|
], Tester.prototype, "parseComplex", null);
|
|
255
|
+
__decorate([
|
|
256
|
+
(0, mocha_1.test)('should parse mongo id'),
|
|
257
|
+
__metadata("design:type", Function),
|
|
258
|
+
__metadata("design:paramtypes", []),
|
|
259
|
+
__metadata("design:returntype", void 0)
|
|
260
|
+
], Tester.prototype, "parseId", null);
|
|
235
261
|
Tester = __decorate([
|
|
236
262
|
(0, mocha_1.suite)('Tester')
|
|
237
263
|
], Tester);
|
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.11",
|
|
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",
|