Skip to content

Commit a347c78

Browse files
cjblandArul-
authored andcommitted
Excluding keys that have trailing "edges.node" on them (parse-community#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 1c75ef2 commit a347c78

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

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)