Ошибка отображения узла - невозможно прочитать свойство 'map' of undefined " - PullRequest
4 голосов
/ 27 июня 2019

Получение ошибки с частью "map" при попытке запустить ее. Невозможно прочитать свойство 'map' of undefined "

Константа customers объявлена ​​выше, поэтому не уверен. Откуда исходит неопределенное? Нужно ли декларировать карту?

const AWS = require('aws-sdk'),
  ses = new AWS.SES(),
  fetch = require('node-fetch');

exports.handler = async (event) => {
  console.log(event.customer_id);

  const customers = await getCustomers();

  customers.map(async customer => await sendEmailToCustomer(customer));

  const customersEmailsPromises = customers.map(async customer => await sendEmailToCustomer(customer));

}

async function getCustomers() {
  try {
    const resp = await fetch('https://3objects.netlify.com/3objects.json');
    const json = await resp.json();

    return json;
  }
  catch(e) {
    throw e;
  }
}

const sendEmailToCustomer = (customer) => new Promise((resolve, reject) => {
  ses.sendEmail({
    Destination:
      { ToAddresses: [customer.email] },
    Message:
      {
        Body: { Text: { Data: `Your contact option is ${customer.customer_id}` } },
        Subject: { Data: "Your Contact Preference" }
      },
    Source: "sales@example.com"
  }, (error, result => {
    if (error) return reject(error);
    resolve(result);
    console.log(result);
  })
  );
})

1 Ответ

1 голос
/ 27 июня 2019

getCustomers ничего не возвращает, что означает, что customers установлено на undefined.

Попробуйте это:

async function getCustomers() {
  try {
    const resp = await fetch('https://3objects.netlify.com/3objects.json');
    const json = await resp.json();

    return json;
  }
  catch(e) {
    throw e;
  }
}

Вы также должны вернуть что-то из функции, которую вы передаете в качестве параметра .map

customers.map(async customer => {
    return await sendEmailToCustomer(customer);
});

или просто:

customers.map(async customer => await sendEmailToCustomer(customer));

И так как .map возвращает новый массив (не изменяет исходный массив), вам придется сохранить возвращаемое значение:

const customersEmailsPromises = customers.map(async customer => await sendEmailToCustomer(customer));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...