From a1d533b148698caeb88a9f3570e47b8800368a25 Mon Sep 17 00:00:00 2001 From: jysperm Date: Tue, 25 Apr 2017 12:18:25 +0800 Subject: [PATCH] :bug: Fix promise support of Cloud.run --- lib/cloud.js | 36 +++++++++++++++++++++--------------- test/helpers/functions.js | 8 ++------ 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/lib/cloud.js b/lib/cloud.js index 107e58b..30ccd12 100644 --- a/lib/cloud.js +++ b/lib/cloud.js @@ -47,23 +47,29 @@ Cloud.run = function(name, data, options) { }).then(function(user) { user = user || options.user; - return new Promise(function(resolve, reject) { - var request = utils.prepareRequestObject({ - user: user, - params: data, - req: options.req - }); - - var response = utils.prepareResponseObject(options.req && options.req.res, function(err, result) { - if (err) { - reject(err); - } else { - resolve(result); - } - }); + const cloudFunction = Cloud.functions[name]; - Cloud.functions[name](request, response); + const request = utils.prepareRequestObject({ + user: user, + params: data, + req: options.req }); + + if (cloudFunction.length === 2) { + return new Promise( (resolve, reject) => { + const response = utils.prepareResponseObject(options.req && options.req.res, function(err, result) { + if (err) { + reject(err); + } else { + resolve(result); + } + }); + + cloudFunction(request, response); + }); + } else { + return cloudFunction(request); + } }); }; diff --git a/test/helpers/functions.js b/test/helpers/functions.js index 7729d3d..68a4a66 100644 --- a/test/helpers/functions.js +++ b/test/helpers/functions.js @@ -143,18 +143,14 @@ AV.Cloud.define('testRun', function(request, response) { ); }); -AV.Cloud.define('testRun_promise', function(request, response) { - AV.Cloud.run('choice', {choice: true}).then(function(data) { +AV.Cloud.define('testRun_promise', function(request) { + return AV.Cloud.run('choice', {choice: true}).then(function(data) { assert.equal('OK~', data); AV.Cloud.run('choice', {choice: false}).then(function(data) { assert.ifError(data); }, function(err) { assert.equal('OMG...', err); - response.success(); }); - }, - function(err) { - assert.ifError(err); }); });