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

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

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

4

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

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HACKER , 2022 All Rights Reserved Powered by AFFINGER5.