diff --git a/src/rest.js b/src/rest.js index 07cf2b4dff..69fe7bc033 100644 --- a/src/rest.js +++ b/src/rest.js @@ -14,6 +14,16 @@ var RestQuery = require('./RestQuery'); var RestWrite = require('./RestWrite'); var triggers = require('./triggers'); +function checkTriggers(className, config, types) { + return types.some((triggerType) => { + return triggers.getTrigger(className, triggers.Types[triggerType], config.applicationId); + }); +} + +function checkLiveQuery(className, config) { + return config.liveQueryController && config.liveQueryController.hasLiveQuery(className) +} + // Returns a promise for an object with optional keys 'results' and 'count'. function find(config, auth, className, restWhere, restOptions, clientSDK) { enforceRoleSecurity('find', className, auth); @@ -49,10 +59,9 @@ function del(config, auth, className, objectId) { var inflatedObject; return Promise.resolve().then(() => { - if (triggers.getTrigger(className, triggers.Types.beforeDelete, config.applicationId) || - triggers.getTrigger(className, triggers.Types.afterDelete, config.applicationId) || - (config.liveQueryController && config.liveQueryController.hasLiveQuery(className)) || - className == '_Session') { + const hasTriggers = checkTriggers(className, config, ['beforeDelete', 'afterDelete']); + const hasLiveQuery = checkLiveQuery(className, config); + if (hasTriggers || hasLiveQuery || className == '_Session') { return find(config, Auth.master(config), className, {objectId: objectId}) .then((response) => { if (response && response.results && response.results.length) { @@ -108,9 +117,9 @@ function update(config, auth, className, objectId, restObject, clientSDK) { enforceRoleSecurity('update', className, auth); return Promise.resolve().then(() => { - if (triggers.getTrigger(className, triggers.Types.beforeSave, config.applicationId) || - triggers.getTrigger(className, triggers.Types.afterSave, config.applicationId) || - (config.liveQueryController && config.liveQueryController.hasLiveQuery(className))) { + const hasTriggers = checkTriggers(className, config, ['beforeSave', 'afterSave']); + const hasLiveQuery = checkLiveQuery(className, config); + if (hasTriggers || hasLiveQuery) { return find(config, Auth.master(config), className, {objectId: objectId}); } return Promise.resolve({});