我有一个Express + ejs小程序,可以保存注册用户的数据。
每个用户都有一个“角色”,该角色已保存在数据库中。
每个用户都有一个html div,我希望每个div的颜色取决于用户的角色。
基本上,我需要使用switch / case函数向每个div添加特定的类。
我试图了解如何以最佳方式在NodeJS + Mongo + DOM之间进行交互,但是我一无所知。
感谢您的帮助!
答案 0 :(得分:3)
创建一个名为getColorByRole.js
的辅助函数,如下所示:
module.exports =(role)=>{
let colorClass;
switch(role){
case 'user':
colorClass='bg-primary';
break;
case 'manager':
colorClass='bg-warning';
break;
case 'admin':
colorClass='bg-success';
break;
default:
colorClass='bg-light';
break;
}
return colorClass;
}
现在,当用户请求时,调用此帮助函数,发送
let getColorByRole=require('./helpers/getColorByRole.js');
app.get('/dashboard',(req,res)=>{
let colorClass=getColorByRole(req.user.role);
res.render('/dashboard',{data:someyourdata,colorClass:colorClass});
});
现在在前端,只需使用EJS变量将colorClass添加到div中,
<div class="<%=colorClass%>" style="width:100%;">
Dashboard
</div>
update:如果要获取多个用户,并且要根据用户角色显示不同的颜色,请按照以下方式进行操作:
User.find({},(err,users)=>{
if(!err && users){
users.map((user)=>{
user.colorClass=getColorByRole(user.role);
return user;
});
}
});