Как добавить нового пользователя в кампанию Mailchimp с помощью облачных функций? - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь добавить нового пользователя в кампанию Mailchimp. Я получаю две ошибки, первая из которых говорит:

Function returned undefined, expected Promise or value

Журнал второй ошибки:

Error: The resource submitted could not be validated. For field-specific details, see the 'errors' array.
  type: 'http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/',
  title: 'Invalid Resource',
  status: 400,
  detail: 'The resource submitted could not be validated. For field-specific details, see the \'errors\' array.',
  instance: '549e8553-5ef1-4600-9271-07255f4673fe',
  errors: 
   [ { field: 'status',
       message: 'The value you selected is not a valid choice.' } ] }

Это моя функция

   exports.userCreated = functions.auth.user().onCreate((user) => {
    const email = user.email;
    // const displayName = user.name;

    // make Mailchimp API request to add a user
    Mailchimp
      .post('/lists/id/members', {
        email_address: email,
        status: 'Signed Up',
        // optional: requires additional setup
        merge_fields: {
          "EMAIL" : email
        }
      })
      .then(function(results) {
        console.log('Successfully added new Firebase user', email, 'to Mailchimp list',results);
      })
      .catch(function(err) {
        console.log(email);
        console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
      });
  });

1 Ответ

3 голосов
/ 05 февраля 2020

В вашей облачной функции есть две ошибки, которые вы обнаружили:

Первая из них заключается в том, что вы ДОЛЖНЫ вернуть Обещание (или значение) в фоновой облачной функции, чтобы указать платформе что это завершено. Пожалуйста, посмотрите три видео о "JavaScript Promises" из серии Firebase для получения более подробной информации по этому ключевому моменту.

Вторая проблема заключается в том, что ваше значение для поля status «не является правильным выбором». Посмотрите на Mailchimp do c, если я не ошибаюсь, правильные значения:

subscribed, pending, unsubscribed или cleaned.


Итак, следующие изменения должны помочь:

   exports.userCreated = functions.auth.user().onCreate((user) => {
    const email = user.email;
    // const displayName = user.name;

    // make Mailchimp API request to add user
    return mailchimp
      .post('/lists/id/members', {
        email_address: email,
        status: 'subscribed',   // For example, it's up to you to find the correct status
        // optional: requires additional setup
        merge_fields: {
          "EMAIL" : email
        }
      })
      .then(function(results) {
        console.log('Successfully added new Firebase user', email, 'to Mailchimp list',results);
        return null;
      })
      .catch(function(err) {
        console.log(email);
        console.log('Mailchimp: Error while attempting to add registered subscriber —', err);
        return null;
      });
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...