如何更新快速js中的特定id信息

问题描述 投票:0回答:1

我想从MongoDB中的用户用户集合中更新特定id的信息。我正在使用ExpressJS。

现在从我的代码我只能更新登录用户信息。作为超级管理员,我想通过ID更新用户的信息。我需要做什么?

现在在我的代码中,当超级管理员登录时,他/她只能更新他/她自己的信息。我希望超级管理员更新用户的信息

router.put('/edit', checkAuth, function (req, res, next) {
    if(req.userData.role === 'superadmin') {
    const id = req.userData.userId;
    User.findOneAndUpdate({ _id: id }, {$set: req.body}, { new: true }, (err, doc) => {
                if (err) return res.send(err.message)
                if (doc) return res.send(doc);
            })
    } else {
        res.status(401).send(["Not authorized. Only super admin can update details."]);
    }       
});

如何从集合中更新用户的信息?

node.js express mongoose routes put
1个回答
0
投票

您需要通过请求内容指定另一个用户的ID,在Express中,这可以通过path parameter轻松实现:

// Example client request: PUT /edit/507f191e810c19729de860ea
router.put('/edit/:userId', checkAuth, function (req, res, next) {
  if (req.userData.role === 'superadmin') {
    const id = req.params.userId;
    User.findOneAndUpdate({ _id: id }, {$set: req.body}, ...);
  } else { /* ... */ }
});

如果更改请求路径(/edit)不适合您,您可以选择通过请求正文指定目标用户ID(您还需要更新客户端请求以将id与新用户数据一起传递) :

router.put('/edit', checkAuth, function (req, res, next) {
  if (req.userData.role === 'superadmin') {
    const { id, ...newUserData } = req.body;
    User.findOneAndUpdate({ _id: id }, {$set: newUserData}, ...);
  } else { /* ... */ }
});
© www.soinside.com 2019 - 2024. All rights reserved.