Javascript 如何将作为请求接收的JSON数据传递给外部变量?

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

我使用Expressjs和Pug创建了一个页面。 它成功地使用MongoDB获取数据

但是,导入的数据是JSON数据,因此我使用请求成功地获取了数据。然而,似乎不可能将这些数据拉入外部变量

我尝试了各种方法,但页面上始终显示未定义或没有任何内容

我从github语言API(
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
之前。