From d1712b8d0e56b3a3f146e69b426159af39e97287 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Wed, 14 Mar 2018 21:34:01 -0500 Subject: [PATCH] Fix Aggregate Match Pointer --- spec/ParseQuery.Aggregate.spec.js | 12 ++++++++---- src/Adapters/Storage/Mongo/MongoStorageAdapter.js | 2 +- src/Routers/PurgeRouter.js | 1 + 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/spec/ParseQuery.Aggregate.spec.js b/spec/ParseQuery.Aggregate.spec.js index dade21ca47..c698395085 100644 --- a/spec/ParseQuery.Aggregate.spec.js +++ b/spec/ParseQuery.Aggregate.spec.js @@ -13,6 +13,10 @@ const masterKeyOptions = { json: true } +const PointerObject = Parse.Object.extend({ + className: "PointerObject" +}); + const loadTestData = () => { const data1 = {score: 10, name: 'foo', sender: {group: 'A'}, views: 900, size: ['S', 'M']}; const data2 = {score: 10, name: 'foo', sender: {group: 'A'}, views: 800, size: ['M', 'L']}; @@ -448,8 +452,8 @@ describe('Parse.Query Aggregate testing', () => { }); it('match pointer query', (done) => { - const pointer1 = new TestObject(); - const pointer2 = new TestObject(); + const pointer1 = new PointerObject(); + const pointer2 = new PointerObject(); const obj1 = new TestObject({ pointer: pointer1 }); const obj2 = new TestObject({ pointer: pointer2 }); const obj3 = new TestObject({ pointer: pointer1 }); @@ -618,8 +622,8 @@ describe('Parse.Query Aggregate testing', () => { }); it('distinct pointer', (done) => { - const pointer1 = new TestObject(); - const pointer2 = new TestObject(); + const pointer1 = new PointerObject(); + const pointer2 = new PointerObject(); const obj1 = new TestObject({ pointer: pointer1 }); const obj2 = new TestObject({ pointer: pointer2 }); const obj3 = new TestObject({ pointer: pointer1 }); diff --git a/src/Adapters/Storage/Mongo/MongoStorageAdapter.js b/src/Adapters/Storage/Mongo/MongoStorageAdapter.js index 29614942a0..3c543090f5 100644 --- a/src/Adapters/Storage/Mongo/MongoStorageAdapter.js +++ b/src/Adapters/Storage/Mongo/MongoStorageAdapter.js @@ -567,7 +567,7 @@ export class MongoStorageAdapter implements StorageAdapter { if (stage.$match) { for (const field in stage.$match) { if (schema.fields[field] && schema.fields[field].type === 'Pointer') { - const transformMatch = { [`_p_${field}`] : `${className}$${stage.$match[field]}` }; + const transformMatch = { [`_p_${field}`] : `${schema.fields[field].targetClass}$${stage.$match[field]}` }; stage.$match = transformMatch; } if (field === 'objectId') { diff --git a/src/Routers/PurgeRouter.js b/src/Routers/PurgeRouter.js index 8c2a340da9..9eb3e9d9f9 100644 --- a/src/Routers/PurgeRouter.js +++ b/src/Routers/PurgeRouter.js @@ -1,5 +1,6 @@ import PromiseRouter from '../PromiseRouter'; import * as middleware from '../middlewares'; +import Parse from 'parse/node'; export class PurgeRouter extends PromiseRouter {