Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在节点中发布请求时从mongo获取数据?_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 在节点中发布请求时从mongo获取数据?

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');

我有一个简单的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');
        }

        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(服务器端以及函数本身)获取的东西是异步的。不管怎样,它成功了。谢谢你:)