【发布时间】:2021-09-15 18:14:17
【问题描述】:
我无法在 expressjs 中进行异步链接。第一个方法(getUser)工作正常并正确返回值。第二种方法(sendmail)工作正常(发送邮件)但它总是返回undefined。 mailResponse app.js 中的值总是返回 undefined。
如果它没有运行,则该方法的内部也不应该工作,但除了return 语句之外一切正常。哪里错了?
这是我的 axios 方法;
const axios = require('axios');
const getUser = async (id) => {
try {
const response = await axios.get('xxxxxx', {
params: {
id: id
}
});
return response.data[0];
} catch (err) {
console.log(err);
}
}
module.exports = getUser;
发送邮件方法;
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@gmail.com',
pass: 'yourpassword'
}
});
var mailOptions = {
from: 'youremail@gmail.com',
to: 'myfriend@yahoo.com',
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
const sendMail = async (data) => {
email.send(mailOptions).then(() =>{
console.log("email has been sent!");
return true;
}).catch((err) => {
console.log(err)
return false;
});
}
module.exports = sendMail;
app.js
const express = require('express');
const app = express();
const port = 3000;
const getUser = require('./fetchData');
const sendMail = require('./sendMail');
let userid = '';
let fetchedData = null;
app.get('/', (req, res) => {
res.send('server is running');
});
app.listen(port, () => {
console.log('App is listening');
});
app.get('/send', (req, res) => {
userid = req.query.userid;
if(!userid){
res.status(404).send('Sorry, cant find that');
} else {
getUser(userid).then(axiosResponse => {
console.log("axiosResponse => ", axiosResponse);
fetchedData = axiosResponse;
sendMail(fetchedData);
}).then(mailResponse => {
console.log("express mail response => ", mailResponse);
res.send(mailResponse);
});
}
});
【问题讨论】:
标签: node.js express axios nodemailer