EJS-将数据传递到部分视图,并在每个视图/页面中使用它.我该怎么做



我使用ejs作为NodeApp的模板引擎,并且我必须在每个页面/视图中使用包含动态数据的部分视图。我不想从每个路由器传递数据来渲染它。我有可能只传递一次数据,然后在任何独立于路由器的地方使用它吗?例如,在导航栏中,我显示带有一些通知的用户信息,我必须在我的网站上使用这个导航栏。如何在不重新划分数据的情况下实现它?

注:此问题为https://github.com/expressjs/express/issues/3858,我把它张贴在这里,因为我在那里没有找到任何解决方案。

好吧,你想做的是在一个页面上显示来自两个不同系列的内容,你必须在后端显示这样的内容,比如说你想在你的部分中获取的产品列表:

exports.getIndex = (req, res, next) => {
const page = req.query.page;
let user;
let hasUser;
User.find().sort('-_id').then(users => {
user = users
hasUser = users.length > 0
return Product.find().sort('-_id')
})
.then(products => {
res.render('index', {
prods: products,
title: 'Ecommerce Site',
path: '/',
admin: false,
hasProduct: products.length > 0,
activeHome: true,
isLoggedIn: req.session.isLoggedIn,
user: user,
hasUser: hasUser,
});
})
.catch(err => {
console.log(err);
});

}

下一步是进入部分文件并编写语法以获取数据,但在每个想要应用部分的页面/视图上,都必须执行return Product.find()

相关内容

最新更新