diff --git a/spec/RestQuery.spec.js b/spec/RestQuery.spec.js index 66af50c8b7..412394df21 100644 --- a/spec/RestQuery.spec.js +++ b/spec/RestQuery.spec.js @@ -419,4 +419,31 @@ describe('RestQuery.each', () => { expect(resultsOne.length).toBe(1); expect(resultsTwo.length).toBe(1); }); + + it('test afterSave response object is return', done => { + Parse.Cloud.beforeSave('TestObject2', function(req) { + req.object.set('tobeaddbefore', true); + req.object.set('tobeaddbeforeandremoveafter', true); + }); + + Parse.Cloud.afterSave('TestObject2', function(req) { + const jsonObject = req.object.toJSON(); + delete jsonObject.todelete; + delete jsonObject.tobeaddbeforeandremoveafter; + jsonObject.toadd = true; + + return jsonObject; + }); + + rest + .create(config, nobody, 'TestObject2', { todelete: true, tokeep: true }) + .then(response => { + expect(response.response.toadd).toBeTruthy(); + expect(response.response.tokeep).toBeTruthy(); + expect(response.response.tobeaddbefore).toBeTruthy(); + expect(response.response.tobeaddbeforeandremoveafter).toBeUndefined(); + expect(response.response.todelete).toBeUndefined(); + done(); + }); + }); }); diff --git a/src/RestWrite.js b/src/RestWrite.js index 3fea6043de..84ac5110f2 100644 --- a/src/RestWrite.js +++ b/src/RestWrite.js @@ -1578,6 +1578,11 @@ RestWrite.prototype.runAfterSaveTrigger = function() { this.config, this.context ) + .then(result => { + if (result && typeof result === 'object') { + this.response.response = result; + } + }) .catch(function(err) { logger.warn('afterSave caught an error', err); }); diff --git a/src/triggers.js b/src/triggers.js index c0a94c5edd..f2917ce6fd 100644 --- a/src/triggers.js +++ b/src/triggers.js @@ -266,6 +266,16 @@ export function getResponseObject(request, resolve, reject) { ) { return resolve(response); } + if ( + response && + typeof response === 'object' && + request.triggerName === Types.afterSave + ) { + return resolve(response); + } + if (request.triggerName === Types.afterSave) { + return resolve(); + } response = {}; if (request.triggerName === Types.beforeSave) { response['object'] = request.object._getSaveJSON();