Mongoose如何更新用户信息

时间:2017-02-06 18:50:17

标签: node.js mongodb express mongoose

我无法为我的应用程序制作@PUT方法。到目前为止,我设法制作了@GET,@ POST和@DELETE。因此,经过一些研究,结果证明@PUT是我的@GET和@POST的混合物。

我的@GET(通过cuid)方法

export function getUser(req, res) {
  // just get the user information
  User.findOne({ cuid: req.params.cuid }).exec((err, user) => {
    if (err) {
      return res.status(500).send(err);
    }
    return res.json({ user });
  });
}

我的@POST方法

export function addUser(req, res) {
  // Check for empty fields
  if (!req.body.user.firstName || !req.body.user.lastName ||    
          !req.body.user.email || !req.body.user.password ||
          !req.body.user.studentId) {
     return res.status(403).end();
 }

  const newUser = new User(req.body.user);

  // Let's sanitize inputs
  newUser.firstName = sanitizeHtml(newUser.firstName);
  newUser.lastName = sanitizeHtml(newUser.lastName);
  newUser.studentId = sanitizeHtml(newUser.studentId);
  newUser.email = sanitizeHtml(newUser.email);
  newUser.password = sha512(newUser.password).toString('hex');

  newUser.cuid = cuid();
  newUser.save((err, saved) => {
  if (err) {
     return res.status(500).send(err);
  }
    return res.json({ user: saved });
  });
}

@ {0}在@PUT方法中与@POST上的addUser函数相同。换句话说,req.body.user将类似于req.body.user

我的问题是您如何修改特定用户(通过cuid)信息并将其保存到数据库?换句话说,你将如何编写@PUT方法

1 个答案:

答案 0 :(得分:0)

尝试findOneAndUpdate

export function updateUser(req, res) {

 var userId = req.body.userId;

 var conditions = {
  _id : userId 
 }

 var update = {
  firstName = sanitizeHtml(req.body.firstName );
  lastName = sanitizeHtml(req.body.lastName);
  studentId = sanitizeHtml(req.body.studentId);
  email = sanitizeHtml(req.body.email);
  password = sha512(req.body.password).toString('hex');
 }

  model.findOneAndUpdate(conditions,update,function(error,result){
    if(error){
      // handle error
    }else{
      console.log(result);
    }
  });
}
希望可以提供帮助!