Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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 为什么节点样式错误第一次回调在回调后返回undefined_Javascript_Node.js_Express - Fatal编程技术网

Javascript 为什么节点样式错误第一次回调在回调后返回undefined

Javascript 为什么节点样式错误第一次回调在回调后返回undefined,javascript,node.js,express,Javascript,Node.js,Express,当我试图执行错误回调功能时,下面的代码返回undefined。我不明白为什么在控制台日志输出完整查询时json没有返回 下面是将json生成到日志中的被调用函数 exports.getThem = (req) => { var addy = req.body.email; Picks.findOne({ 'email' : addy }, (err, theResults) => { if (err) { return (

当我试图执行错误回调功能时,下面的代码返回undefined。我不明白为什么在控制台日志输出完整查询时json没有返回

下面是将json生成到日志中的被调用函数


exports.getThem = (req) => {
    var addy = req.body.email;

    Picks.findOne({ 'email' :  addy }, (err, theResults) => {
        if (err) {
            return ({ 'msg': err });
        } 


        console.log("made the query " + JSON.stringify(theResults)); 
        return theResults;
    });
}; 

上面,结果打印“makethequery”和一个完整的JSON字符串

调用代码将执行以下JSON并将其返回给Postman,而不包含结果JSON

console.log“log this”从不执行,第二个日志在“undefined”之后打印


{
  "token" : someCrazyLookingToken 
}

为什么??回调中是否存在我不期待的时间问题?

这不一定是时间问题,但可能是您对回调工作方式的误解,尤其是在其范围内。在代码中,结果永远不会有值

试着像这样设置它,阅读承诺和回调以更好地理解这两个方面

exports.loginUser = async (req, res) => {
    try {
        const theResults = await new Promise((resolve, reject) => {
            Picks.getPicks(req, (err, thePicks) => {
                if (err) {
                    return reject(err);
                }
                return resolve(thePicks);
            })
        });

        return res.status(200).json({picks: theResults, token: createToken(user)});
    } catch (err) {
        //handle err
    }
}

这回答了你的问题吗?
exports.loginUser = async (req, res) => {
    try {
        const theResults = await new Promise((resolve, reject) => {
            Picks.getPicks(req, (err, thePicks) => {
                if (err) {
                    return reject(err);
                }
                return resolve(thePicks);
            })
        });

        return res.status(200).json({picks: theResults, token: createToken(user)});
    } catch (err) {
        //handle err
    }
}