我想在导航栏中显示用户详细信息(例如:用户名),为此我一直在向我的视图发送'req.session.user'变量。
我一直在做的是,对于每个视图渲染,我都像这样发送req.session变量:
function addTestCaseToTestRail() {
return compareTestRailAndProtractor()
.then(async function(tests) {
var testsLength = tests.tests.length;
var url = testRailURL + testRailData.addTestEndPoint;
for (var i = 0; i < testsLength; i++) {
await new Promise((resolve, reject) => {
if (tests.tests[i].id == undefined) {
var newId = ""
var options = {
url: url,
headers: headers,
body: {
"title": tests.tests[i].name,
"custom_jira_component": 465
},
json: true
}
request.post(options, function(err, httpResponse, body) {
if (err) {
reject(err);
}
newId = body.id;
tests.tests[i].id = newId;
resolve();
});
} else {
resolve()
}
});
}
return tests
})
}
function test() {
addTestCaseToTestRail()
.then(function(tests) {
console.log(tests);
})
.catch(function(err) {
console.error(err)
})
}
test()
然后在我的骨干视图中,我的导航栏位于其中,我打印出用户名。
克服这种重复成就的最佳做法是什么? 我搜索过,但没有结果。
谢谢。
答案 0 :(得分:2)
如果您不想将req.session.user
发送到这样的每个页面:{user:req.session.user}
,您可以将此数据添加到res.locals对象:
app.use(function(req, res, next) {
res.locals.user = req.session.user
next()
})
因此,在每个页面上,您可以输出这样的用户名(带ejs的示例):
<% if (user) { %>
<h1>Hello, <%= user.name %></h1>
<% } %>