我想通过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."]);
}
});
如何更新集合中的用户信息?
答案 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