@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.
@@ -336,14 +336,25 @@ exports.QueryParser = QueryParser;
336
336
  */
337
337
  function transformFilter(filter) {
338
338
  var walk = function (obj) {
339
- for (var key in obj) {
339
+ var _loop_1 = function (key) {
340
340
  if (Object.prototype.hasOwnProperty.call(obj, key)) {
341
341
  var value = obj[key];
342
- if (typeof value === 'object')
343
- walk(obj[key]);
344
- else
345
- obj[key] = mongoose_1.Types.ObjectId.isValid(value) ? new mongoose_1.Types.ObjectId(value) : value;
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.9",
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",