From d22e0a2a0630637b2bf50c7ec7cfa766cbd72792 Mon Sep 17 00:00:00 2001 From: Christopher Bland Date: Tue, 16 Mar 2021 21:29:17 -0400 Subject: [PATCH 1/3] Excluding keys that have trailing "edges.node" on them as they will not be selectable anyway --- src/GraphQL/loaders/parseClassQueries.js | 1 + src/GraphQL/loaders/parseClassTypes.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/GraphQL/loaders/parseClassQueries.js b/src/GraphQL/loaders/parseClassQueries.js index 4fc3fa83d5..f0a855103d 100644 --- a/src/GraphQL/loaders/parseClassQueries.js +++ b/src/GraphQL/loaders/parseClassQueries.js @@ -106,6 +106,7 @@ const load = function (parseGraphQLSchema, parseClass, parseClassConfig: ?ParseG selectedFields .filter(field => field.startsWith('edges.node.')) .map(field => field.replace('edges.node.', '')) + .filter(field => field.indexOf('edges.node') < 0) ); const parseOrder = order && order.join(','); diff --git a/src/GraphQL/loaders/parseClassTypes.js b/src/GraphQL/loaders/parseClassTypes.js index 22d90b52b7..df4ed791ea 100644 --- a/src/GraphQL/loaders/parseClassTypes.js +++ b/src/GraphQL/loaders/parseClassTypes.js @@ -382,6 +382,7 @@ const load = (parseGraphQLSchema, parseClass, parseClassConfig: ?ParseGraphQLCla selectedFields .filter(field => field.startsWith('edges.node.')) .map(field => field.replace('edges.node.', '')) + .filter(field => field.indexOf('edges.node') < 0) ); const parseOrder = order && order.join(','); From 8153b2c9d757ca024ca1fa0a687c6c11992d2d4a Mon Sep 17 00:00:00 2001 From: Christopher Bland Date: Wed, 17 Mar 2021 18:58:44 -0400 Subject: [PATCH 2/3] Updated CHANGELOG and added test case --- CHANGELOG.md | 1 + spec/ParseGraphQLServer.spec.js | 61 +++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c9c3bb0a6..79cd3add6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -118,6 +118,7 @@ ___ - Randomize test suite (Diamond Lewis) [#7265](https://github.com/parse-community/parse-server/pull/7265) - LDAP: Properly unbind client on group search error (Diamond Lewis) [#7265](https://github.com/parse-community/parse-server/pull/7265) - Improve data consistency in Push and Job Status update (Diamond Lewis) [#7267](https://github.com/parse-community/parse-server/pull/7267) +- Excluding keys that have trailing edges.node when performing GraphQL resolver (Chris Bland) [#7273](https://github.com/parse-community/parse-server/pull/7273) ___ ## 4.5.0 [Full Changelog](https://github.com/parse-community/parse-server/compare/4.4.0...4.5.0) diff --git a/spec/ParseGraphQLServer.spec.js b/spec/ParseGraphQLServer.spec.js index 2e06e60c2d..e2606512d5 100644 --- a/spec/ParseGraphQLServer.spec.js +++ b/spec/ParseGraphQLServer.spec.js @@ -5703,6 +5703,67 @@ describe('ParseGraphQLServer', () => { result.data.parentClass.graphQLClasses.edges.map(edge => edge.node.objectId) ).toEqual([object3.id, object1.id, object2.id]); }); + + fit('should support including relation', async () => { + await prepareData(); + + await parseGraphQLServer.parseGraphQLSchema.schemaCache.clear(); + + const result1 = await apolloClient.query({ + query: gql` + query FindRoles { + roles { + edges { + node { + name + } + } + } + } + `, + variables: {}, + context: { + headers: { + 'X-Parse-Session-Token': user1.getSessionToken(), + }, + }, + }); + + const result2 = await apolloClient.query({ + query: gql` + query FindRoles { + roles { + edges { + node { + name + users { + edges { + node { + username + } + } + } + } + } + } + } + `, + variables: {}, + context: { + headers: { + 'X-Parse-Session-Token': user1.getSessionToken(), + }, + }, + }); + + expect(result1.data.roles.edges[0].node.name).toBeDefined(); + expect(result1.data.roles.edges[0].node.users).toBeUndefined(); + expect(result1.data.roles.edges[0].node.roles).toBeUndefined(); + expect(result2.data.roles.edges[0].node.name).toBeDefined(); + expect(result2.data.roles.edges[0].node.users).toBeDefined(); + expect(result2.data.roles.edges[0].node.users.edges[0].node.username).toBeDefined(); + expect(result2.data.roles.edges[0].node.roles).toBeUndefined(); + }); }); }); From c159b5fc08864d471947a16da8e995624f47f255 Mon Sep 17 00:00:00 2001 From: Christopher Bland Date: Wed, 17 Mar 2021 19:00:33 -0400 Subject: [PATCH 3/3] Forgot to change fit back to it --- spec/ParseGraphQLServer.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/ParseGraphQLServer.spec.js b/spec/ParseGraphQLServer.spec.js index e2606512d5..fc3f5d3d10 100644 --- a/spec/ParseGraphQLServer.spec.js +++ b/spec/ParseGraphQLServer.spec.js @@ -5704,7 +5704,7 @@ describe('ParseGraphQLServer', () => { ).toEqual([object3.id, object1.id, object2.id]); }); - fit('should support including relation', async () => { + it('should support including relation', async () => { await prepareData(); await parseGraphQLServer.parseGraphQLSchema.schemaCache.clear();