Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8936

【node.js】validationを新しいバージョンに対応コードに変更する

$
0
0

解決したい問題

パッケージvalidationのバージョンが古いので新しいバージョンの書き方に変更したい。

環境

OS: macOS
express: ^4.17.1
ejs: ^2.6.2
express-validator: ^6.4.0

変更前のコード(古いコード)

router.post('/',(req,res,next)=>{varrequest=req;varresponse=res;req.check('name','NAMEは必ず入力して下さい。').notEmpty();req.check('password','PASSWORDは必ず入力して下さい。').notEmpty();req.getValidationResult().then((result)=>{if(!result.isEmpty()){varcontent='<ul class="error">';varresult_arr=result.array();for(varninresult_arr){content+='<li>'+reault_arr[n].msg+'</li>'}content+='</ul>';vardata={title:'Login',content:content,form:req.body}response.render('login',data);}else{varnm=req.body.name;varpw=req.body.password;User.query({where:{name:nm},andWhre:{password:pw}}).fetch().then((model)=>{if(model==null){vardata={title:'再入力',content:'<p class="error">名前またはパスワードが違います</p>',form:req.body};respose.render('login',data);}else{request.session.login=model.attributes;vardata={title:'Login',content:'<p>ログインしました!<br>トップページに戻ってメッセージを送信下さい。</p>',form:req.body}respose.render('login',data);}});}})});

このreq.checkがエラーになる。

変更後

上に↓のコードを書き足す。

const{check,validationResult}=require('express-validator');
router.post('/',[check('name','NAMEは必ず入力して下さい。').notEmpty(),check('password','PASSWORDは必ず入力して下さい。').notEmpty()],(req,res,next)=>{varrequest=req;varresponse=res;consterrors=validationResult(req);if(!errors.isEmpty()){varcontent='<ul class="error">';varresult_arr=errors.array();for(varninresult_arr){content+='<li>'+result_arr[n].msg+'</li>'}content+='</ul>';vardata={title:'Login',content:content,form:req.body}response.render('login',data);}else{varnm=req.body.name;varpw=req.body.password;User.query({where:{name:nm},andWhere:{password:pw}}).fetch().then((model)=>{if(model==null){vardata={title:'再入力',content:'<p class="error">名前またはパスワードが違います</p>',form:req.body};response.render('login',data);}else{request.session.login=model.attributes;vardata={title:'Login',content:'<p>ログインしました!<br>トップページに戻ってメッセージを送信下さい。</p>',form:req.body}response.render('login',data);}}).catch((error)=>{vardata={title:'再入力',content:'<p class="error">名前またはパスワードが違います。</p>',form:req.body};res.render('login',data);console.log(error);});}});

大きく変わったのはcheckの位置です。

参考

↓この本の学習中に、バージョンが古くてエラーになった。
https://www.amazon.co.jp/Node-js%E8%B6%85%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798055220

↓最新バージョンの参考
https://express-validator.github.io/docs/


Viewing all articles
Browse latest Browse all 8936

Trending Articles