Обновить информацию о пользователе - PullRequest
0 голосов
/ 11 января 2019

Пробовал это для обновления информации о пользователе, только номер телефона, но он не получает обновления.

router.post('/edit', checkAuth, function (req, res, next) {
    console.log(req.userData.userId)
    User.update({_id: req.userData.userId}, {$set:req.userData.phoneNo}, function (err){
        if (err) {
            console.log(err);
        }
        res.status(200).send(req.userData);
    });
});

Мой пользовательский контроллер const mongoose = require ('mongoose');

const User = mongoose.model('User');

module.exports.register = (req, res, next) =>{  

    var user = new User();
    user.fullName = req.body.fullName;
    user.email = req.body.email;
    user.password = req.body.password;
    user.phoneNumber = req.body.phoneNumber;
    user.save((err, doc) =>{
        if(!err)
            res.send(doc);
        else{
            if (err.code == 11000)
                    res.status(422).send(["Entered duplicate email address. Please check"]);
            else
            return next(err);
            }
    });
}

А потом я аутентифицируюсь, передавая jwt в это поле phoneNo: user[0].phoneNumber

Аут-токен проверяет и декодирует поля

const token = req.headers.authorization.split(" ")[1];
    const decoded = jwt.verify(token, process.env.JWT_KEY)
        req.userData = decoded;

Обновление не работает и появляется сообщение об ошибке Invalid atomic update value for $set. Expected an object, received string.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Прежде всего, вы должны использовать PATCH -метод - поскольку вы обновляете только один элемент в существующем объекте, в body вы должны отправить id пользователя и новое значение определенного значения. Если вы используете mongoose, вы можете попробовать это User.findOneAndUpdate({ _id: id }, updatedItem, { new: true }, (err, doc) => { if (err) return res.send(err.message) if (doc) return res.send(doc); })

const id = req.body._id;, если вы не используете мангуст, попробуйте findAndModify метод

0 голосов
/ 11 января 2019

Ваш код

User.update({_id: req.userData.userId}, {$set:req.userData.phoneNo}

Правильный код:

User.update({_id: req.userData.userId}, {$set:{phoneNumber:req.userData.phoneNo}}

Попробуйте этот метод:

User.findByIdAndUpdate(req.userData.userId, { $set:{phoneNumber:req.userData.phoneNo}}, { new: true }, function (err, user) {
  if (err) console.log(err);
  res.send(user);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...