2017-02-06 4 views
0

私のアプリケーションで@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 }); 
    }); 
} 

req.body.userは、アドユーザーの関数のよう@PUT方法で同じになります@POSTに。言い換えれば、req.body.user{ firstname: 'assa', lastName: 'nen', email: '[email protected]', password: 'ddee', student: 112 }

私の質問は、あなたが情報(CUIDで)特定のユーザーを変更し、それはDBに保存する方法をであるようなものでしょうか?言い換えれば、どのように@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オプションも渡さない限り、mongooseスキーマのモデル検証は実行されません。 – Paul

関連する問題