首页 > 解决方案 > 从前端编辑用户信息

问题描述

我正在建立一个使用mongodb. 我已经成功创建了一个admin页面,该页面只能由管理员(if permission > 0)访问。在admin page所有用户上都显示有用户名、电子邮件、电话号码和points. 我想要做的是能够incease使用网页上的管理员帐户来获取用户的积分。以下是用户的显示jade js方式及其在页面上的外观:

ul each user, i in userlist li#user_list_item label Username:   span #{user.username}   label Email:   span #{user.email}   label Points:   span #{user.points}   button.btn.btn-primary() +pts   label Telefon:   span #{user.phoneNo}   label Permissions:   span #{user.permissions}

在此处输入图像描述

旁边的点有button名称+pts。当按下该按钮时,我想增加按钮所在的用户点。假设我在第一个用户名处单击按钮:admin因此点数将增加 1,因此新点数为1005。标签仅用于更改其在 css 中的颜色。如何通过一个可用于每个按钮的功能来实现这一点?这是get request我在管理页面上使用的。

router.get('/admin', isAdmin, function(req, res) {
  const MongoClient = mongodb.MongoClient;
  const url = 'mongodb://localhost:27017/gymsite';

  MongoClient.connect(url, function(err, db) {
      if (err) {
          res.send({
              msg: "Failed to connect to db"
          });
      } else {
          const users = db.collection('users');

          users.find({}).toArray(function(err, result) {
              if (err) {
                  res.send(err);
              } else if (result.length) {
                  res.render('admin', {
                      'userlist': result
                  });
              } else {
                  res.send({
                      msg: 'No users found'
                  });
              }
              db.close();
          });
      }
  });

});

isAdmin是一个检查是否是用户的功能isAutheinticated,如果是,则permissions该用户是否是greater than 0。基本上它只检查它是否是管理员。

我希望我清楚地写下我想要达到的目标。

提前谢谢你们!

标签: javascriptnode.jsexpressserverfrontend

解决方案


一开始只设置一个到数据库的连接可能很有用,promise 在这里很有帮助,另外我们可以在一个实用程序中使用路由内部的数据库:

在此处输入图像描述

现在我们知道了,管理页面可以缩短为:

在此处输入图像描述

现在要将设置应用于用户,我们需要一个 API 端点:

在此处输入图像描述

而且您必须更改 admin 路由下呈现的 html,以便您可以轻松使用它:

在此处输入图像描述

然后,只要单击更新,您只需在后台向 API 发出请求:

在此处输入图像描述


推荐阅读