From b477d1699280a21656c324e3298fc3c69cbfb5f6 Mon Sep 17 00:00:00 2001 From: Nikita Lutsenko Date: Wed, 24 Feb 2016 00:05:03 -0800 Subject: [PATCH] Do not do any setup for beforeSave trigger if none is set for this className. --- src/RestWrite.js | 5 +++++ src/triggers.js | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/RestWrite.js b/src/RestWrite.js index bc2b91ba..ff9ffa17 100644 --- a/src/RestWrite.js +++ b/src/RestWrite.js @@ -111,6 +111,11 @@ RestWrite.prototype.validateSchema = function() { // Runs any beforeSave triggers against this operation. // Any change leads to our data being mutated. RestWrite.prototype.runBeforeTrigger = function() { + // Avoid doing any setup for triggers if there is no 'beforeSave' trigger for this class. + if (!triggers.triggerExists(this.className, triggers.Types.beforeSave)) { + return Promise.resolve(); + } + // Cloud code gets a bit of extra data for its objects var extraData = {className: this.className}; if (this.query && this.query.objectId) { diff --git a/src/triggers.js b/src/triggers.js index fadb03f0..8c9d068d 100644 --- a/src/triggers.js +++ b/src/triggers.js @@ -18,6 +18,10 @@ var getTrigger = function(className, triggerType) { return undefined; }; +function triggerExists(className: string, type: string): boolean { + return (getTrigger(className, type) != undefined); +} + var getRequestObject = function(triggerType, auth, parseObject, originalParseObject) { var request = { triggerName: triggerType, @@ -96,5 +100,6 @@ module.exports = { getRequestObject: getRequestObject, inflate: inflate, maybeRunTrigger: maybeRunTrigger, + triggerExists: triggerExists, Types: Types };