【发布时间】:2019-08-22 08:22:16
【问题描述】:
我想从 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."]);
}
});
如何从集合中更新用户信息?
【问题讨论】:
-
您要更新的用户
id在哪里?您的代码将当前用户的id传递给findOneAndUpdate,您需要传递要更新的用户的id(通过req对象传递)。 -
@MoadEnnagi 是的,但是当我进入编辑页面时,我只有一个 url
/edit。因此,除非单击了特定用户的编辑选项,否则我无法路由。然后我可以使用类似/edit/:userId的东西。我不想再次重定向。在这种情况下可以编辑吗?
标签: node.js express mongoose routes put