Skip to content

Commit 50f1e8e

Browse files
brunoMauricedavimacedo
authored andcommitted
Make possible to alter response using the after save trigger (#5814)
* make possible to alter response using the after save trigger like for after find * code clearing to follow same object checking * remove console log debug * fix test unit
1 parent 4fe0ff6 commit 50f1e8e

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

spec/RestQuery.spec.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,4 +419,31 @@ describe('RestQuery.each', () => {
419419
expect(resultsOne.length).toBe(1);
420420
expect(resultsTwo.length).toBe(1);
421421
});
422+
423+
it('test afterSave response object is return', done => {
424+
Parse.Cloud.beforeSave('TestObject2', function(req) {
425+
req.object.set('tobeaddbefore', true);
426+
req.object.set('tobeaddbeforeandremoveafter', true);
427+
});
428+
429+
Parse.Cloud.afterSave('TestObject2', function(req) {
430+
const jsonObject = req.object.toJSON();
431+
delete jsonObject.todelete;
432+
delete jsonObject.tobeaddbeforeandremoveafter;
433+
jsonObject.toadd = true;
434+
435+
return jsonObject;
436+
});
437+
438+
rest
439+
.create(config, nobody, 'TestObject2', { todelete: true, tokeep: true })
440+
.then(response => {
441+
expect(response.response.toadd).toBeTruthy();
442+
expect(response.response.tokeep).toBeTruthy();
443+
expect(response.response.tobeaddbefore).toBeTruthy();
444+
expect(response.response.tobeaddbeforeandremoveafter).toBeUndefined();
445+
expect(response.response.todelete).toBeUndefined();
446+
done();
447+
});
448+
});
422449
});

src/RestWrite.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1578,6 +1578,11 @@ RestWrite.prototype.runAfterSaveTrigger = function() {
15781578
this.config,
15791579
this.context
15801580
)
1581+
.then(result => {
1582+
if (result && typeof result === 'object') {
1583+
this.response.response = result;
1584+
}
1585+
})
15811586
.catch(function(err) {
15821587
logger.warn('afterSave caught an error', err);
15831588
});

src/triggers.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,16 @@ export function getResponseObject(request, resolve, reject) {
266266
) {
267267
return resolve(response);
268268
}
269+
if (
270+
response &&
271+
typeof response === 'object' &&
272+
request.triggerName === Types.afterSave
273+
) {
274+
return resolve(response);
275+
}
276+
if (request.triggerName === Types.afterSave) {
277+
return resolve();
278+
}
269279
response = {};
270280
if (request.triggerName === Types.beforeSave) {
271281
response['object'] = request.object._getSaveJSON();

0 commit comments

Comments
 (0)