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
This commit is contained in:
BrunoMaurice
2019-07-25 18:31:18 +02:00
committed by Antonio Davi Macedo Coelho de Castro
parent 4fe0ff6ebf
commit 50f1e8eb77
3 changed files with 42 additions and 0 deletions

View File

@@ -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();
});
});
});

View File

@@ -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);
});

View File

@@ -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();