【发布时间】:2017-07-30 12:39:25
【问题描述】:
我正在构建一个 Angular 4 和 Node 应用程序。一旦任何用户在前端注册,我会将他们的数据存储在数据库中,然后想使用nodemailer 包向他们发送成功注册电子邮件。
这是 Node js 代码:
router.post('/', function(req, res, next) {
SOME_DATABASE_FUNC() {
if(FAILED_CASE) {
return res.status(500).json({
title: 'An error occurred',
status: 500,
error: error
});
var mailOptions {...}
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
return res.status(500).json({
title: 'An error occurred',
status: 500,
error: error
});
}
console.log('Message', info.messageId, info.response);
return res.status(200).json({
message: 'Emailed successfully',
details: info
});
});
}
}
});
此代码运行良好,但发送电子邮件需要几秒钟,并且用户必须等待显示成功响应,这似乎不太合适。相反,我想在后台发送它可能是一个异步函数或一个 cron 作业。
但我不确定如何转换代码以将其作为作业发送,而不是在数据库事务之后发送和等待。请帮我解决这个问题。
【问题讨论】:
标签: node.js angular asynchronous cron nodemailer