Hey guys,
I’m using the fantastic new beforeFileSave
and afterSaveFile
triggers. However, I was expecting afterSaveFile
to behave like afterSave
, that is:
You can use an afterSave
handler to perform lengthy operations after sending a response back to the client.
Whereas, as far as I can tell, saving a file waits for any afterSaveFile trigger to finish, and throwing an error in afterSaveFile prevents the save.
Parse.Cloud.afterSave('AfterSaveTest2', function() {
return new Promise((resolve, reject) => {
setTimeout(function() {
reject('THIS SHOULD BE IGNORED');
}, 1000);
});
});
const obj = new Parse.Object('AfterSaveTest2');
obj.save().then(
function() {
done();
},
function(error) {
fail(error);
done();
}
);
Parse.Cloud.afterSaveFile(async () => {
throw new Parse.Error(400, 'some-error-message');
});
const filename = 'donald_duck.pdf';
const file = new Parse.File(filename, [1, 2, 3], 'text/plain');
try {
await file.save({ useMasterKey: true });
} catch (error) {
expect(error.message).toBe('some-error-message');
}
Should afterSaveFile ignore lengthy operations and should the client receive a successful response even if afterSaveFile throws an error?