diff --git a/spec/ParseGraphQLServer.spec.js b/spec/ParseGraphQLServer.spec.js index f708f78b9d..fa3c9d38b8 100644 --- a/spec/ParseGraphQLServer.spec.js +++ b/spec/ParseGraphQLServer.spec.js @@ -1523,6 +1523,44 @@ describe('ParseGraphQLServer', () => { ).toEqual(['someValue1', 'someValue3']); }); + it('should support _or operation', async () => { + await prepareData(); + + await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); + + const result = await apolloClient.query({ + query: gql` + query { + objects { + findGraphQLClass( + where: { + _or: [ + { someField: { _eq: "someValue1" } } + { someField: { _eq: "someValue2" } } + ] + } + ) { + results { + someField + } + } + } + } + `, + context: { + headers: { + 'X-Parse-Master-Key': 'test', + }, + }, + }); + + expect( + result.data.objects.findGraphQLClass.results + .map(object => object.someField) + .sort() + ).toEqual(['someValue1', 'someValue2']); + }); + it('should support order, skip and limit arguments', async () => { const promises = []; for (let i = 0; i < 100; i++) { diff --git a/src/Controllers/DatabaseController.js b/src/Controllers/DatabaseController.js index cfe2c3570d..222c2facf4 100644 --- a/src/Controllers/DatabaseController.js +++ b/src/Controllers/DatabaseController.js @@ -119,7 +119,7 @@ const validateQuery = ( */ Object.keys(query).forEach(key => { const noCollisions = !query.$or.some(subq => - subq.hasOwnProperty(key) + Object.hasOwnProperty.call(subq, key) ); let hasNears = false; if (query[key] != null && typeof query[key] == 'object') {