Возвращение Nil в функции Parse Cloud

Я пытаюсь реализовать облачную функцию Parse, которая использует метод проверки Mailgun API для адреса электронной почты. Я, очевидно, делаю что-то не так, поскольку когда я вызываю этот метод из objective-c, я получаю обратно nil, но облачный журнал (console.info) показывает, что метод выполняется правильно - просто не возвращает никакого значения. Я новичок в мышлении async / Promise в Javascript, поэтому мне интересно, может ли кто-нибудь увидеть, где я здесь ошибаюсь.

Моя облачная функция, реализованная на моем сервере Parse Server 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.info(data);
        return Promise.resolve(JSON.stringify(data));
    })
    .catch(err => {
        console.info(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);
           }];

Рекомендую прочитать облачный код документация.

Freddy 24.11.2018 08:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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));
})

Другие вопросы по теме