NodeJS-从请求返回JSON

时间:2018-07-01 21:58:19

标签: json node.js httprequest

我目前在NodeJS中做一些工作,现在遇到以下问题: 当我从HTTP请求中获取JSON对象并想返回它时,它显示为"undefined"

这是我无法使用的NodeJS代码:

 function verifyUser(uname,pword){
    var options = {
        url: 'CENSORED',
        method: 'POST',
        headers: headers,
        form: {'Username':uname, 'Password':pword, 'Key':key}
    }
    request(options,function(error,response,body){
        if(!error && response.statusCode == 200){
            return body;
        }
    })    
}

var test1 = verifyUser("RobDeFlop","CENSORED");
console.log(test1);

但是当我将return替换为console.log时,它向我显示了json对象。 我希望有人可以帮助我:)

1 个答案:

答案 0 :(得分:1)

啊,第一次在节点上学习异步js的乐趣:3

正如@Mark_M所提到的,仅在处理请求后才调用请求中的函数。结果,您无法从verifyUser()函数返回变量。验证用户发送请求后,verifyUser()立即返回,并在收到响应后调用request()中的函数。

理想情况下,您应该通过提供回调函数来遵循异步流程:

//We'll define some function called 'callback'
function verifyUser(uname,pword, callback){
    var options = {
        url: 'CENSORED',
        method: 'POST',
        headers: headers,
        form: {'Username':uname, 'Password':pword, 'Key':key}
    }
    request(options,callback);
    // Here I've changed your inline callback function to the one passed to verifyUser as an argument. 
}


// Then, your main code:
verifyuser("RobDeFlop","CENSORED", next);
function next(error,response,body){
        if(!error && response.statusCode == 200){
            //Do useful stuff with the body here.
        }
    })    
}