これはノードエクスプレスのコードで、SQLトランザクションが正常に完了すると電子メールを送信します!ノードコールバック - コードが動作しない
router.post('/',function(req,res,next){
sql.connect(config).then(function() {
var request = new sql.Request();
request.query(`update projects set CIP_NCIP= '${req.body.cip_noncip}' , Capital_Expense ='${req.body.capital_expensed}' , Approval_Status ='Approved' where Project_ID ='${req.body.projid}'`).then(function(recordset) {
console.log('Recordset: ' + recordset);
console.log('Affected: ' + request.rowsAffected);
}).catch(function(err) {
if(err) {
console.log('Request error: ' + err);
}
})
}).then(
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
})).catch(function(err) {
if (err) {
console.log('SQL Connection Error: ' + err);
}
});
});
SQLのINSERTが動作しているようですが、そのコールバックとES5にかなり新しいコード
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
})
のこのビットを実行していません。提案は、あなたが.then
メソッドを介して結合するための機能を実行することにより、
return request.query(`update projects set CIP_NCIP= '${req.body.cip_noncip}' , Capital_Expense ='${req.body.capital_expensed}' , Approval_Status ='Approved' where Project_ID ='${req.body.projid}'`).then(function(recordset) {
console.log('Recordset: ' + recordset);
console.log('Affected: ' + request.rowsAffected);
}).catch(function(err) {
if(err) {
console.log('Request error: ' + err);
}
})
私は見ることができますが、限り、コードが実行されるように、それが動作するはずliktに見える問題のカップル - あなたは 'sendmailのを移動した場合'' request.query'のコールバックを呼び出すと、そこでは正常に動作しますか? 'mailOptions'はどこから来ましたか?コード内に、これが存在し、正しく構成されていると想定していないことを確認してください。 – James
これはjsファイル全体です。https://www.itextpad.com/nXB8DStC2s – SSS
でも、request.queryのコールバックのconsole.log( 'test')はうまく動作しません。 – SSS