【问题标题】:Nil return in Parse Cloud functionParse Cloud 函数中的零返回
【发布时间】: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);
           }];

【问题讨论】:

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


【解决方案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));
})

【讨论】:

    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2016-03-17
    • 2021-04-30
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多