Skip to content

Commit 6313656

Browse files
authored
Excluding keys that have trailing "edges.node" on them (#7273)
* Excluding keys that have trailing "edges.node" on them as they will not be selectable anyway * Updated CHANGELOG and added test case * Forgot to change fit back to it
1 parent 637326d commit 6313656

File tree

4 files changed

+64
-0
lines changed

4 files changed

+64
-0
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ ___
118118
- Randomize test suite (Diamond Lewis) [#7265](https://github.com/parse-community/parse-server/pull/7265)
119119
- LDAP: Properly unbind client on group search error (Diamond Lewis) [#7265](https://github.com/parse-community/parse-server/pull/7265)
120120
- Improve data consistency in Push and Job Status update (Diamond Lewis) [#7267](https://github.com/parse-community/parse-server/pull/7267)
121+
- Excluding keys that have trailing edges.node when performing GraphQL resolver (Chris Bland) [#7273](https://github.com/parse-community/parse-server/pull/7273)
121122
___
122123
## 4.5.0
123124
[Full Changelog](https://github.com/parse-community/parse-server/compare/4.4.0...4.5.0)

spec/ParseGraphQLServer.spec.js

+61
Original file line numberDiff line numberDiff line change
@@ -5703,6 +5703,67 @@ describe('ParseGraphQLServer', () => {
57035703
result.data.parentClass.graphQLClasses.edges.map(edge => edge.node.objectId)
57045704
).toEqual([object3.id, object1.id, object2.id]);
57055705
});
5706+
5707+
it('should support including relation', async () => {
5708+
await prepareData();
5709+
5710+
await parseGraphQLServer.parseGraphQLSchema.schemaCache.clear();
5711+
5712+
const result1 = await apolloClient.query({
5713+
query: gql`
5714+
query FindRoles {
5715+
roles {
5716+
edges {
5717+
node {
5718+
name
5719+
}
5720+
}
5721+
}
5722+
}
5723+
`,
5724+
variables: {},
5725+
context: {
5726+
headers: {
5727+
'X-Parse-Session-Token': user1.getSessionToken(),
5728+
},
5729+
},
5730+
});
5731+
5732+
const result2 = await apolloClient.query({
5733+
query: gql`
5734+
query FindRoles {
5735+
roles {
5736+
edges {
5737+
node {
5738+
name
5739+
users {
5740+
edges {
5741+
node {
5742+
username
5743+
}
5744+
}
5745+
}
5746+
}
5747+
}
5748+
}
5749+
}
5750+
`,
5751+
variables: {},
5752+
context: {
5753+
headers: {
5754+
'X-Parse-Session-Token': user1.getSessionToken(),
5755+
},
5756+
},
5757+
});
5758+
5759+
expect(result1.data.roles.edges[0].node.name).toBeDefined();
5760+
expect(result1.data.roles.edges[0].node.users).toBeUndefined();
5761+
expect(result1.data.roles.edges[0].node.roles).toBeUndefined();
5762+
expect(result2.data.roles.edges[0].node.name).toBeDefined();
5763+
expect(result2.data.roles.edges[0].node.users).toBeDefined();
5764+
expect(result2.data.roles.edges[0].node.users.edges[0].node.username).toBeDefined();
5765+
expect(result2.data.roles.edges[0].node.roles).toBeUndefined();
5766+
});
57065767
});
57075768
});
57085769

src/GraphQL/loaders/parseClassQueries.js

+1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ const load = function (parseGraphQLSchema, parseClass, parseClassConfig: ?ParseG
106106
selectedFields
107107
.filter(field => field.startsWith('edges.node.'))
108108
.map(field => field.replace('edges.node.', ''))
109+
.filter(field => field.indexOf('edges.node') < 0)
109110
);
110111
const parseOrder = order && order.join(',');
111112

src/GraphQL/loaders/parseClassTypes.js

+1
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ const load = (parseGraphQLSchema, parseClass, parseClassConfig: ?ParseGraphQLCla
382382
selectedFields
383383
.filter(field => field.startsWith('edges.node.'))
384384
.map(field => field.replace('edges.node.', ''))
385+
.filter(field => field.indexOf('edges.node') < 0)
385386
);
386387
const parseOrder = order && order.join(',');
387388

0 commit comments

Comments
 (0)