NodeJS + Mongo-如何与DOM交互以从数据库中获取数据?

时间:2019-05-04 11:08:59

标签: javascript node.js mongodb express ejs

我有一个Express + ejs小程序,可以保存注册用户的数据。
每个用户都有一个“角色”,该角色已保存在数据库中。
每个用户都有一个html div,我希望每个div的颜色取决于用户的角色。

基本上,我需要使用switch / case函数向每个div添加特定的类。
我试图了解如何以最佳方式在NodeJS + Mongo + DOM之间进行交互,但是我一无所知。

  • 保存在数据库中的角色不能等于其相应类的名称。

感谢您的帮助!

1 个答案:

答案 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;
        });
    }
});