Parse Cloud 函数中的零返回

Posted

技术标签:

【中文标题】Parse Cloud 函数中的零返回【英文标题】:Nil return in Parse Cloud function 【发布时间】:2018-11-21 21:08:21 【问题描述】:

我正在尝试实现一个 Parse 云函数,该函数利用 Mailgun API 验证方法来验证电子邮件地址。我显然做错了什么,因为当我从 Objective-c 调用这个方法时,我得到了 nil,但是云日志(console.log)显示该方法正在正确执行——只是没有返回任何值。我对 javascript 中的 async/Promise 思维很陌生,所以我想知道是否有人能看到我在这里出错的地方。

我在 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);
           ];

【问题讨论】:

推荐大家阅读云码documentation。 【参考方案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));
)

【讨论】:

以上是关于Parse Cloud 函数中的零返回的主要内容,如果未能解决你的问题,请参考以下文章

Parse.Cloud.httpRequest 使用 POST 方法返回“未定义”而不是响应

response.error不是Parse Cloud Code中的函数

Parse Cloud Code 中的调用函数

如何将 Parse Cloud Code 中的值返回到我的 iOS 应用程序?

Parse Cloud 函数失败并出现错误 141

从云代码函数返回基于 objectId 的 Parse.User 对象列表