diff --git a/src/GraphQL/helpers/objectsQueries.js b/src/GraphQL/helpers/objectsQueries.js index c1237dea..e7133d20 100644 --- a/src/GraphQL/helpers/objectsQueries.js +++ b/src/GraphQL/helpers/objectsQueries.js @@ -8,6 +8,20 @@ const needToGetAllKeys = (fields, keys) => ? !!keys.split(',').find(keyName => !fields[keyName.split('.')[0]]) : true; +const transformOrder = order => + order + .map(o => { + const direction = o.indexOf('_ASC') > 0 ? '_ASC' : '_DESC'; + let field = o.replace(direction, ''); + field = field === 'id' ? 'objectId' : field; + if (direction === '_ASC') { + return `${field}`; + } else { + return `-${field}`; + } + }) + .join(','); + const getObject = async ( className, objectId, @@ -130,7 +144,7 @@ const findObjects = async ( } if (options.limit !== 0) { if (order) { - options.order = order; + options.order = transformOrder(order); } if (skip) { options.skip = skip; diff --git a/src/GraphQL/loaders/parseClassQueries.js b/src/GraphQL/loaders/parseClassQueries.js index cd1e71d9..83d90c1d 100644 --- a/src/GraphQL/loaders/parseClassQueries.js +++ b/src/GraphQL/loaders/parseClassQueries.js @@ -125,12 +125,11 @@ const load = function( .filter(field => field.startsWith('edges.node.')) .map(field => field.replace('edges.node.', '')) ); - const parseOrder = order && order.join(','); return await objectsQueries.findObjects( className, where, - parseOrder, + order, skip, first, after, diff --git a/src/GraphQL/loaders/parseClassTypes.js b/src/GraphQL/loaders/parseClassTypes.js index b0272c4d..7477320f 100644 --- a/src/GraphQL/loaders/parseClassTypes.js +++ b/src/GraphQL/loaders/parseClassTypes.js @@ -347,12 +347,11 @@ const load = ( const updatedSortFields = { ...sortFields, }; - const value = field === 'id' ? 'objectId' : field; if (asc) { - updatedSortFields[`${field}_ASC`] = { value }; + updatedSortFields[`${field}_ASC`] = {}; } if (desc) { - updatedSortFields[`${field}_DESC`] = { value: `-${value}` }; + updatedSortFields[`${field}_DESC`] = {}; } return updatedSortFields; }, {}), @@ -434,7 +433,6 @@ const load = ( .filter(field => field.startsWith('edges.node.')) .map(field => field.replace('edges.node.', '')) ); - const parseOrder = order && order.join(','); return objectsQueries.findObjects( source[field].className, @@ -449,7 +447,7 @@ const load = ( }, ...(where || {}), }, - parseOrder, + order, skip, first, after,