Я хочу сохранить детали формы в базе данных MYSQL, а также отправить детали формы администратору с помощью nodemailer. Пока я могу отправлять данные администратору и сохранять данные в базе данных MySql индивидуально, но я хочу, чтобы он сохранял и отправлял данные формы одновременно.
app.post('/send',function(req,res){
var type_lea=req.body.lev_type.value
res.write('type "' + req.body.lev_type.value+'".\n');
let transporter = nodeMailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: 'marcus1313@gmail.com',
pass: 'Password'
}
});
app.post('/submit',function(req,res){
var employ_id=req.body.emp_id;
var reason=req.body.leave_reason;
var sql = "INSERT INTO leave_det (Emp_id,Reason) VALUES
('"+req.body.emp_id+"','"+ req.body.leave_reason+"',)";
conn.query(sql, function (err, result) {
if (err) throw err;
console.log("1 record inserted");
});
В этом html-коде я могу вызвать только один почтовый запрос, но я хочу вызывать их оба одновременно.
<form action="/send" name="mail" class="loyal" method="post" >
</form>
2 ответа
Вы можете попробовать этот метод, может он вам поможет.
var app = express()
function otherPath(req, res, next) {
return res.send('ok')
}
function home(req, res, next) {
req.url = '/other/path'
/* Uncomment the next line if you want to change the method
req.method = 'POST'
*/
return app._router.handle(req, res, next)
}
app.get('/other/path', otherPath)
app.get('/', home)
Вы можете отправить свой POST-запрос только в одну конечную точку. Но здесь это не должно быть проблемой, поскольку вы можете вызывать свой почтовый код в той же функции, где вы храните данные в базе данных.
Поскольку вызов SMTP-сервера займет некоторое время, я бы полностью вынул задачу рассылки из цикла. Просто напишите в базу данных и выполните рассылку в отдельном фоновом задании.
Также внимательно проверьте свой оператор SQL на предмет риска внедрения SQL-кода.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.
app.post('/send',function(req,res){
, и в нем вы должны выполнить логику сохранения в БД, и как только это будет сделано, вы можете инициировать отправку почты в ответ на успешное сохранение БД.