Я пытаюсь преобразовать свой лямбда-код для выполнения в цепочке обещаний, но я не уверен в правильном подходе к этому. Я пытаюсь изменить мой текущий код для выполнения этих действий, send email -> add to newsletter list if checkbox is checked
, но моя часть электронной почты успешно выполняется, а затем выдает ошибку после попытки связать функцию add to newsletter
после generateResponse(result, 200)
. моя ошибка:
TypeError: generateResponse(...).then is not a function
Вот код:
Основная функция:
module.exports.sendEmail = async event => {
const { body } = event;
const data = JSON.parse(body);
try {
const result = await messageContent(data);
return generateResponse(result, 200)
.then(function(){
if(data.subscribe == "on"){
return addToNewsletter(data.from, data.topic)
.then(function(result){
return generateResponse(result, 200);
});
}
});
} catch(err) {
console.log(err)
}
};
generateResponse:
const generateResponse = (body, statusCode) => {
console.log("generateResponse")
console.log(body)
return {
headers: {
"access-control-allow-methods": "POST",
"access-control-allow-origin": "*",
"content-type": "application/json"
},
statusCode: statusCode,
body: `{\"result\": ${body.message}}`
};
};
addToNewsletter:
const addToNewsletter = (email, topic) => {
const mg = mailgun({apiKey: API_KEY, domain: NEWSLETTER_DOMAIN});
const list = mg.lists(`newsletter@{DOMAIN}`);
console.log(list)
const subscriber = {
address: email,
vars: {
topic: topic
},
subscribed: "yes",
upsert: "yes"
};
console.log(subscriber);
return list.members().create(subscriber, function(err, data){
console.log(data);
console.log(err);
});
}