我正在尝试将我的Lambda代码转换为在Promise链中运行,但是我不确定要解决此问题的正确方法。我正在尝试修改当前代码以运行这些操作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);
});
}
我正在尝试将我的Lambda代码转换为在Promise链中运行,但是我不确定要解决此问题的正确方法。我正在尝试修改当前代码以运行这些操作,发送电子邮件-> ...
您不会从generateResponse函数返回任何诺言。因此,错误.then() is not a function
。尝试更改您的函数以返回如下所示的Promise。