Как обновить определенную идентификационную информацию в экспресс-js - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу обновить информацию по определенному идентификатору из пользовательской коллекции пользователей в MongoDB. Я использую ExpressJS.

Прямо сейчас из своего кода я могу обновлять только информацию для входа в систему. Будучи супер-администратором Я хочу обновить информацию пользователя по ID. Что мне здесь делать?

Здесь, в моем коде, когда super admin входит в систему, он / она может обновлять только свою собственную информацию. Я хочу, чтобы супер администратор обновил информацию о пользователе

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 голосов
/ 01 апреля 2019

Вам необходимо указать идентификатор другого пользователя в содержимом запроса, в Express это может быть легко достигнуто с помощью параметра пути :

// 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 вместе с вашими новыми данными пользователя):

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 { /* ... */ }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...