更新用户信息

Update user information

尝试更新用户信息,只有 phone 个数字,但没有更新。

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

auth-token 验证和解码字段

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

您的代码

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);
});

首先,您应该使用 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方法