Blockchain code Metaverse VR

Crypto×VR×SmartContract(458)

スポンサーリンク

//tips

//smart contract

昨日のsyncの働きについて少し復習。

router.post('/add', (req, res, next) =>{

//syncは全てのモデルを同期して処理していくためのもの
//外部からデータベースに同時アクセスが行われ、データの一貫性を失わせないよう
//データベースを変更する処理を全て一括して実行し、問題を生じさせないようにする

db.sequelize.sync()
.then(()=>db.User.create({
//レコード作成処理
name:req.body.name,
pass:req.body.pass,
mail:req.body.mail,
age:req.body.age
}))
//create実行後の処理
.then(usr=>{
res.redirect('/users');
});

});

レコードの更新処理も行う。まずは対応するejsを作成。
router.get('/edit', (req, res, next) =>{
db.User.findByPk(req.query.id)
.then(usr=>{
var data={
title:'Users/Edit',
form:usr
}
res.render('users/edit',data);
})
});

router.post('/edit', (req, res, next) =>{

db.sequelize.sync()
.then(()=>db.User.update({
//レコード作成処理
name:req.body.name,
pass:req.body.pass,
mail:req.body.mail,
age:req.body.age
},
{
where:{id:req.body.id}
}))
.then(usr=>{
res.redirect('/users');
});

});

http://localhost:3000/users/edit?id=22で実行することでidの該当者の編集フォームが表示されアップデートできるようになる。

次に削除の確認。

router.get('/delete', (req, res, next) =>{
//findByPkは引数に指定したidのモデルを取得するメソッド
db.User.findByPk(req.query.id)
.then(usr=>{
var data={
title:'Users/Delete',
form:usr
}
res.render('users/delete',data);
})
});

router.post('/delete', (req, res, next) =>{

db.sequelize.sync()
.then(()=>db.User.destroy({
where:{id:req.body.id}
}))
.then(user =>{
res.redirect('/users');
});
});

http://localhost:3000/users/delete?id=22にアクセスして削除処理できるのを確認した。これはシンプル。

ただ、sequelizeを利用する時にもバリデーションを行う必要があり、ここではexpress validatorは使わずに独自の仕組みを使っていく。

ここまではモデルに保管する値についてはDatatypeによる指定のみだったが、ここでバリデーション情報を追加して定義していく。

Modelフォルダのusers.jsを書き換える。

'use strict';
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
name: {
type:DataTypes.STRING,
validate:{
notEmpty:true
}
},
pass: {
type:DataTypes.STRING,
validate:{
notEmpty:true
}

},
mail:{
type:DataTypes.STRING,
validate:{
isEmail:true
}

},
age: {
type:DataTypes.INTEGER,
validate:{
isInt:true,
min:0
}
}
}, {});
User.associate = function(models) {
// associations can be defined here
};
return User;
};

Not emptyは未入力の禁止、isemailはメールアドレス形式のみ許可などとなっている。

router.get('/add', (req, res, next) =>{
var data={
title:'Users/Add',
form:new db.User(),//userオブジェクト
err:null//バリデーションエラーの際のエラーオブジェクトを渡すため
}
res.render('users/add',data);

});

router.post('/add', (req, res, next) =>{

const form={
name:req.body.name,
pass:req.body.pass,
mail:req.body.mail,
age:req.body.age,
};

db.sequelize.sync()
.then(()=>db.User.create(form)
.then(usr=>{//成功時の処理
res.redirect('/users')
})
.catch(err=>{//失敗時の処理
var data={
title:'Users/Add',
form:form,
err:err
}
res.render('users/add',data);
})
)
});

ここからはチャットボードの進化版を作成していく。

人気の記事

1

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

3

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.