Javascript 在节点中发布请求时从mongo获取数据?
我有一个简单的POST请求,通过nodemailer发送邮件Javascript 在节点中发布请求时从mongo获取数据?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有一个简单的POST请求,通过nodemailer发送邮件 app.post("/sendMail", function(req, res) { nodemailer.sendMail({ from: 'xx', to: userEmail }, function(error, info) { if (error) { return res.send(500, 'Internal error, try again later');
app.post("/sendMail", function(req, res) {
nodemailer.sendMail({ from: 'xx', to: userEmail }, function(error, info) {
if (error) {
return res.send(500, 'Internal error, try again later');
}
res.send(200, 'Mail sent!');
});
});
但是,出于安全原因,我不会将用户邮件存储在客户端的任何位置。但是在请求中,我有用户id
db中的单个集合如下所示:
{
id: '1312feew3',
email: 'patrick@hotmail.com',
}
因此,如果我的req.body.id
等于1312feew3
,我需要获取指定的集合并从中取出电子邮件
我试过的
我试着做一些简单的事情:
var userEmail = getUserById(req.body.id, function (err, user) {
if (err) {
return res.send(400, 'Something went wrong');
}
return res.json(user);
}).email;
(我把它放在第一个代码的第二行)
不幸的是,它没有像我预期的那样工作
它不会抛出任何错误,但是邮件不会被发送。假设getUserById
是异步的,它不能直接返回用户,您必须从回调函数中访问它:
getUserById(req.body.id, function (err, user) {
if (err) {
return res.send(400, 'Something went wrong');
}
var userEmail = user.email;
// Send the email here, within the callback as well.
...
return res.json(user);
});
这有点奇怪,从db(服务器端以及函数本身)获取的东西是异步的。不管怎样,它成功了。谢谢你:)