如何在Express JS中更新特定的ID信息

时间:2019-04-01 08:07:14

标签: node.js express mongoose routes put

我想通过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."]);
    }       
});

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

1 个答案:

答案 0 :(得分: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(您还需要更新客户端请求以传递{ {1}}以及您的新用户数据):

id