解析云函数中的零返回

时间:2018-11-21 21:08:22

标签: javascript objective-c parse-platform parse-server mailgun

我正在尝试实现一个解析云功能,该功能利用Mailgun API验证方法来获取电子邮件地址。我显然在做错事,因为当我从Objective-C调用此方法时,返回零,但是云日志(console.log)显示该方法正确执行-只是不返回任何值。我对使用Javascript进行异步/承诺思考非常陌生,所以我想知道是否有人可以看到我在这里出了错。

我的node.js Parse Server中出现问题的云功能是:

Parse.Cloud.define('validateEmail', async(request) => {

    var mailgun = require('mailgun.js');

    var mg = mailgun.client({
        username: 'api',
        key: process.env.MAILGUN_API_KEY,
        public_key: process.env.MAILGUN_PUBLIC_KEY
      });

    mg.validate.get(request.params.email, {useMasterKey: true}).then(data => {
        console.log(data);
        return Promise.resolve(JSON.stringify(data));
    })
    .catch(err => {
        console.log(err);
        return Promise.resolve(error);
    });
})

从objective-c代码中调用云函数为:

 [PFCloud callFunctionInBackground:@"validateEmail" withParameters:@{@"email":user.email} block:^(NSString *bodydata, NSError *error) {

                 NSDictionary *body = [NSJSONSerialization JSONObjectWithData:[bodydata dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];

                NSLog(@"validateEmail : %@", body);
           }];

1 个答案:

答案 0 :(得分:1)

一旦我弄清楚了怎么做,就很容易解决了。这是我的工作解决方案:

Parse.Cloud.define('validateEmail',  async (request) => {
    var mailgun = require('mailgun.js');

    var mg = mailgun.client({
        username: 'api',
        key: process.env.MAILGUN_API_KEY,
        public_key: process.env.MAILGUN_PUBLIC_KEY
      });

   return mg.validate.get(request.params.email, true).then(data => {
       return data}) 
        .catch(err => handleParseError(err));
})