代码之家  ›  专栏  ›  技术社区  ›  Trond Kristiansen

parse cloud函数中的nil返回

  •  -1
  • Trond Kristiansen  · 技术社区  · 6 年前

    我正在尝试实现一个解析云函数,它对电子邮件地址使用mailgun api验证方法。显然,我做了一些错误的事情,因为当我从objective-c调用这个方法时,我得到了nil,但是cloud日志(console.log)显示该方法执行正确,只是没有返回任何值。我对javascript中的异步/承诺思想还不太熟悉,所以我想知道是否有人能看出我在这方面做错了什么。

    在node.js解析服务器中实现的云函数是:

    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代码调用cloud函数如下:

     [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 回复  |  直到 6 年前
        1
  •  0
  •   E_net4 Tunn    6 年前

    一旦我知道怎么做,这个问题就很容易解决了。以下是我的工作解决方案:

    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));
    })