2017-02-06 3 views
0

У меня возникла проблема с использованием метода @PUT для моего приложения. До сих пор мне удалось создать @GET, @POST и @DELETE. Итак, после некоторых исследований выяснилось, что @PUT представляет собой смесь моих @GET и @POST.Mongoose как обновить информацию о пользователе

Мой @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 }); 
    }); 
} 

req.body.user будет таким же в методе @PUT как в функции AddUser на @POST. Другими словами, req.body.user будет что-то вроде { firstname: 'assa', lastName: 'nen', email: '[email protected]', password: 'ddee', student: 112 }

Мой вопрос является как бы вы изменить конкретного пользователя (от CUID) информацию и сохранить его в БД? Другими словами, как бы вы написать метод @PUT

ответ

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

Надежда может помочь!

+0

Важно отметить, что этот подход не будет выполнять проверку модели в схеме мангуста, если вы также не передадите параметр runValidators: true. – Paul

Смежные вопросы