diff --git a/spec/CloudCode.spec.js b/spec/CloudCode.spec.js index 7ee53ca27c..307e97e9a6 100644 --- a/spec/CloudCode.spec.js +++ b/spec/CloudCode.spec.js @@ -1472,6 +1472,32 @@ describe('beforeFind hooks', () => { }); }); + it('should handle sorting where', (done) => { + Parse.Cloud.beforeFind('MyObject', (req) => { + const query = req.query; + query.ascending('score'); + return query; + }); + + const count = 20; + const objects = []; + while (objects.length != count) { + const object = new Parse.Object('MyObject'); + object.set('score', Math.floor(Math.random() * 100)); + objects.push(object); + } + Parse.Object.saveAll(objects).then(() => { + const query = new Parse.Query('MyObject'); + return query.find(); + }).then((objects) => { + let lastScore = -1; + objects.forEach((element) => { + expect(element.get('score') >= lastScore).toBe(true); + lastScore = element.get('score'); + }); + }).then(done).catch(done.fail); + }); + it('should add beforeFind trigger using get API',(done) => { const hook = { method: function(req) { diff --git a/src/triggers.js b/src/triggers.js index a11a71f7f4..f8f0e6e89f 100644 --- a/src/triggers.js +++ b/src/triggers.js @@ -356,6 +356,10 @@ export function maybeRunQueryTrigger(triggerType, className, restWhere, restOpti restOptions = restOptions || {}; restOptions.keys = jsonQuery.keys; } + if (jsonQuery.order) { + restOptions = restOptions || {}; + restOptions.order = jsonQuery.order; + } if (requestObject.readPreference) { restOptions = restOptions || {}; restOptions.readPreference = requestObject.readPreference;