diff --git a/spec/ParseGraphQLServer.spec.js b/spec/ParseGraphQLServer.spec.js index be2caa8550..b77e8a1105 100644 --- a/spec/ParseGraphQLServer.spec.js +++ b/spec/ParseGraphQLServer.spec.js @@ -5723,6 +5723,38 @@ describe('ParseGraphQLServer', () => { expect(getResult.data.objects.someClasses.results.length).toEqual(2); }); + it('should support undefined array', async () => { + const schema = await new Parse.Schema('SomeClass'); + schema.addArray('someArray'); + await schema.save(); + + const obj = new Parse.Object('SomeClass'); + await obj.save(); + + await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); + + const getResult = await apolloClient.query({ + query: gql` + query GetSomeObject($objectId: ID!) { + objects { + someClass(objectId: $objectId) { + objectId + someArray { + ... on Element { + value + } + } + } + } + } + `, + variables: { + objectId: obj.id, + }, + }); + expect(getResult.data.objects.someClass.someArray).toEqual(null); + }); + it('should support null values', async () => { const createResult = await apolloClient.mutate({ mutation: gql` diff --git a/src/GraphQL/loaders/parseClassTypes.js b/src/GraphQL/loaders/parseClassTypes.js index 0bbd184822..fb1de5bf30 100644 --- a/src/GraphQL/loaders/parseClassTypes.js +++ b/src/GraphQL/loaders/parseClassTypes.js @@ -639,6 +639,7 @@ const load = ( description: `Use Inline Fragment on Array to get results: https://graphql.org/learn/queries/#inline-fragments`, type, async resolve(source) { + if (!source[field]) return null; return source[field].map(async elem => { if ( elem.className &&