Javascript 如何将作为请求接收的JSON数据传递给外部变量?
我使用Expressjs和Pug创建了一个页面。 它成功地使用MongoDB获取数据 但是,导入的数据是JSON数据,因此我使用请求成功地获取了数据。然而,似乎不可能将这些数据拉入外部变量 我尝试了各种方法,但页面上始终显示未定义或没有任何内容 我从github语言API(Javascript 如何将作为请求接收的JSON数据传递给外部变量?,javascript,variables,Javascript,Variables,我使用Expressjs和Pug创建了一个页面。 它成功地使用MongoDB获取数据 但是,导入的数据是JSON数据,因此我使用请求成功地获取了数据。然而,似乎不可能将这些数据拉入外部变量 我尝试了各种方法,但页面上始终显示未定义或没有任何内容 我从github语言API(https://api.github.com/repos/writingdeveloper/Blueinno2/languages) [JavaScript代码] router.get("/:userId/:page
https://api.github.com/repos/writingdeveloper/Blueinno2/languages
)
[JavaScript代码]
router.get("/:userId/:pageId", function (req, res, next) {
// GET URL params and put it into :pageId
let userId = req.params.userId;
let pageId = req.params.pageId;
Repo.find({
'owner.login': userId,
'name': pageId
}, function (err, repoData) {
if (err) console.log(err);
// console.log(repoData);
console.log(repoData[0].name)
let URL = repoData[0].languages_url;
let keywordData; // Create empty keywordData Object
request.get({
url: URL,
json: true,
headers: {
'User-Agent': 'request'
}
}, (err, res, data) => {
if (err) {
console.log('Error:', err);
} else if (res.statusCode !== 200) {
console.log('Status:', res.statusCode);
} else {
console.log(data) // It works!!!
keywordData = data; // Tried to save data to keywordData variable
}
});
console.log(keywordData); // Problem. It returns undefined
res.render("detail", {
userId: userId,
pageId: pageId,
projectName: repoData.name,
keyword: keywordData, // keywordData is undefined so this is also not working
});
})
});
试着让你请求我们 在请求完成之前调用res.render函数,因此要使用的变量仍然为空。
如果请求synchronus,则请求后的代码将仅在请求完成时执行。尝试调试代码。在设置关键字数据的行和出现问题的行上设置一个断点,并查看先执行哪个断点。将
let keywordData
移动到Repo.find
之前。