我的问题是如何确保我的变量在页面被渲染之前被加载?我将 node.js 与 express 和everyauth 一起使用。
这是代码:
app.get('/', function(req, res) {
app.locals.rep = global.repos;
res.render('index');
});
目前,页面已加载,但包含变量的段落为空,并且出现错误:“无法读取未定义的属性 '...' [...]”。当我刷新页面时,内容流入。
索引.jade
extends layout
block content
h1= title
- if (!everyauth.loggedIn)
a(href="/auth/github") Login with github
- else
h3
a(href='/logout') Logout
h3 GitHub User Data
- each r in rep
p= r.name
p= r.description
这是我设置 repos 变量的地方:
var 回购;
全局.repos = [];everyauth.github
.appId(config.gh_clientId)
.appSecret(config.gh_secret)
.findOrCreateUser( 函数 (sess, accessToken, accessTokenExtra, ghUser) {if (typeof usersByGhId[ghUser.id] === 'undefined') { usersByGhId[ghUser.id] = addUser('github', ghUser); var options = { host: "api.github.com", path: "/users/cmarius02/repos", method: "GET", headers: { "User-Agent": "github-connect" } }; var request= https.request(options, function(response){ var body=''; response.on("data", function(chunk){ body+=chunk.toString("utf8"); }); response.on("end", function(){ var json=JSON.parse(body); // console.log(json); global.repos = []; for (var k in json) if ({}.hasOwnProperty.call(json, k)) { global.repos.push({ name: json[k].name, description: json[k].description }); } }); }); request.end(); return usersByGhId[ghUser.id]; } else { return usersByGhId[ghUser.id]; } })
.redirectPath('/');
这是我使用 node.js 的第一天,所以请耐心等待。先感谢您。