From e83fc1214df8071a4c88cc9744dc7567945b693f Mon Sep 17 00:00:00 2001 From: Brett Ponder Date: Mon, 25 Jan 2021 20:55:41 -0600 Subject: [PATCH 1/5] add search for atlas search index --- src/Routers/AggregateRouter.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Routers/AggregateRouter.js b/src/Routers/AggregateRouter.js index b994f5a6cc..28931e21ae 100644 --- a/src/Routers/AggregateRouter.js +++ b/src/Routers/AggregateRouter.js @@ -28,6 +28,7 @@ const PIPELINE_KEYS = [ 'redact', 'replaceRoot', 'sample', + 'search', 'skip', 'sort', 'sortByCount', From c36e9115050130da2f81807365f1781f73d9cd7e Mon Sep 17 00:00:00 2001 From: Brett Ponder Date: Tue, 2 Mar 2021 21:03:56 -0600 Subject: [PATCH 2/5] added test for search in pipeline --- spec/AggregateRouter.spec.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spec/AggregateRouter.spec.js b/spec/AggregateRouter.spec.js index 665c51e8c1..aaedd11aa7 100644 --- a/spec/AggregateRouter.spec.js +++ b/spec/AggregateRouter.spec.js @@ -74,4 +74,15 @@ describe('AggregateRouter', () => { expect(e.message).toBe('Pipeline stages should only have one key found group, match'); } }); + + it('get search pipeline from Pipeline Operator (Array)', () => { + const body = { + pipeline: { + search: {}, + }, + }; + const expected = [{ $search: {} }]; + const result = AggregateRouter.getPipeline(body); + expect(result).toEqual(expected); + }); }); From 25f7a11c294cf2c31e60441fd065fdda1aa75282 Mon Sep 17 00:00:00 2001 From: Brett Ponder Date: Tue, 2 Mar 2021 21:41:17 -0600 Subject: [PATCH 3/5] removed stage name check in pipeline --- src/Routers/AggregateRouter.js | 36 ---------------------------------- 1 file changed, 36 deletions(-) diff --git a/src/Routers/AggregateRouter.js b/src/Routers/AggregateRouter.js index 28931e21ae..2faa9e4c41 100644 --- a/src/Routers/AggregateRouter.js +++ b/src/Routers/AggregateRouter.js @@ -4,39 +4,6 @@ import * as middleware from '../middlewares'; import Parse from 'parse/node'; import UsersRouter from './UsersRouter'; -const BASE_KEYS = ['where', 'distinct', 'pipeline', 'hint', 'explain']; - -const PIPELINE_KEYS = [ - 'addFields', - 'bucket', - 'bucketAuto', - 'collStats', - 'count', - 'currentOp', - 'facet', - 'geoNear', - 'graphLookup', - 'group', - 'indexStats', - 'limit', - 'listLocalSessions', - 'listSessions', - 'lookup', - 'match', - 'out', - 'project', - 'redact', - 'replaceRoot', - 'sample', - 'search', - 'skip', - 'sort', - 'sortByCount', - 'unwind', -]; - -const ALLOWED_KEYS = [...BASE_KEYS, ...PIPELINE_KEYS]; - export class AggregateRouter extends ClassesRouter { handleFind(req) { const body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query)); @@ -123,9 +90,6 @@ export class AggregateRouter extends ClassesRouter { } static transformStage(stageName, stage) { - if (ALLOWED_KEYS.indexOf(stageName) === -1) { - throw new Parse.Error(Parse.Error.INVALID_QUERY, `Invalid parameter for query: ${stageName}`); - } if (stageName === 'group') { if (Object.prototype.hasOwnProperty.call(stage[stageName], '_id')) { throw new Parse.Error( From 66c9c5fbbcc912804e6f98bb4d13dfc3f462c77c Mon Sep 17 00:00:00 2001 From: Brett Ponder Date: Tue, 2 Mar 2021 21:58:22 -0600 Subject: [PATCH 4/5] removed spec for invalid query invalid key --- spec/ParseQuery.Aggregate.spec.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/spec/ParseQuery.Aggregate.spec.js b/spec/ParseQuery.Aggregate.spec.js index 598ed51a38..60b04b1fad 100644 --- a/spec/ParseQuery.Aggregate.spec.js +++ b/spec/ParseQuery.Aggregate.spec.js @@ -83,18 +83,6 @@ describe('Parse.Query Aggregate testing', () => { ); }); - it('invalid query invalid key', done => { - const options = Object.assign({}, masterKeyOptions, { - body: { - unknown: {}, - }, - }); - get(Parse.serverURL + '/aggregate/TestObject', options).catch(error => { - expect(error.error.code).toEqual(Parse.Error.INVALID_QUERY); - done(); - }); - }); - it('invalid query group _id', done => { const options = Object.assign({}, masterKeyOptions, { body: { From 688508918ebe9dfb2bafccc63b59563a4d93e821 Mon Sep 17 00:00:00 2001 From: Brett Ponder Date: Wed, 3 Mar 2021 09:31:17 -0600 Subject: [PATCH 5/5] updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a12739f78..77ff4c1db8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ ___ - FIX: Winston Logger interpolating stdout to console [#7114](https://github.com/parse-community/parse-server/pull/7114). Thanks to [dplewis](https://github.com/dplewis) - NEW: LiveQuery support for $and, $nor, $containedBy, $geoWithin, $geoIntersects queries [#7113](https://github.com/parse-community/parse-server/pull/7113). Thanks to [dplewis](https://github.com/dplewis) - NEW: Supporting patterns in LiveQuery server's config parameter `classNames` [#7131](https://github.com/parse-community/parse-server/pull/7131). Thanks to [Nes-si](https://github.com/Nes-si) +- IMPROVE: Removed Stage name check on aggregate pipelines [#7237](https://github.com/parse-community/parse-server/pull/7237). Thanks to [BRETT71](https://github.com/BRETT71) ### 4.5.0 [Full Changelog](https://github.com/parse-community/parse-server/compare/4.4.0...4.5.0)