Кажется, вы подключили обработчик обещаний .then
к app.post
.app.post
предоставляется Express и не возвращает обещание, вместо этого он использует функцию-обработчик.
Похоже, что вы действительно намеревались получить обещание из db.Applicant.create.В этом случае вам нужно будет взять ваше .then
обещание и поставить его в соответствии с db.Applicant.create следующим образом.
app.post("/api/applicants", function(req, res) {
return db.Applicant.create(req.body).then(function(appPost){
// Respond to the HTTP request
res.send('Successfully posted new Applicant');
res.end(); // Ensure the response is sent before any emailing is attempted
//mail details for nodemailer
let mailOptions = {
from: '"noreply@cap.org" <app@cap.org>', // sender address
to: 'ijvv7dth54f7zp3w@ethereal.email', // list of receivers
subject: 'Application Submitted', // Subject line
text: req.body.firstname + ' ' + req.body.last_name + ' just sent you a message!', // plain text body
html: '<b>'+req.body.first_name+'</b>' + '</br>' +
'' + req.body.last_name + '</br>' +
'DOB: '
// html body
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
// Preview only available when sending through an Ethereal account
console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@blurdybloop.com>
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
});
});
});
В этом случае я предполагаю, что db.Applicant.create
возвращает обещание,хотя невозможно знать наверняка, не зная пакетов, которые вы используете.Кроме того, обратите внимание, что я добавил «res.end ()», который закрывает HTTP-ответ перед попыткой ввода кода электронной почты, это необязательно, но он должен гарантировать, что клиент получит ответ до обработки электронного письма.Вы можете или не хотите делать это также.