今回は前回の続き。
基本的な操作を行ってみましょう。
- 概要
- INDEX(トップページ)
- ALLSHOW(すべてのレコードを表示する)
- CREATE(新規に作成する)
- READ(指定したIDの情報を表示)
- UPDATE(レコードの更新)
- DELETE(レコードの削除)
- まとめ
概要
今回は、簡易登録を作ってみました。
登録する情報は
- ID
- 名前
- メールアドレス
- 年齢
構成は以下。
今回紹介するのはrouter。
-- app.js -- public -- style.css -- router -- index.js -- allshow.js -- create.js -- read.js -- update.js -- delete.js -- views -- index.ejs -- allshow.ejs -- create.ejs -- read.ejs -- update.ejs -- delete.ejs -- head.ejs
機能は以下。
- すべてのレコードを表示する
- 新規でレコードを追加
- 選択したIDの情報を表示する
- 選択したIDの情報を編集する
- 選択したIDの情報を削除する
INDEX(トップページ)
このページからAllSHOW、CREATEに遷移します。
var express = require('express'); var router = express.Router(); router.get('/',(req, res, next) => { res.render('index.ejs', { title: 'INDEX', conten:'' }); }); module.exports = router;
ALLSHOW(すべてのレコードを表示する)
すべてのレコードを表示します。
var mysql = require('mysql'); var express = require('express'); var router = express.Router(); const mysql_setting = { host : 'ホスト', user : 'ユーザー', password : 'パスワード', database : '対象のデータベース' }; router.get('/',(req, res, next) => { var connection = mysql.createConnection(mysql_setting); connection.connect(); connection.query('SELECT * from テーブル名', function (error, results, fields) { if (error == null) { var data = {title:'ALLSHOW',content:results}; res.render('allshow.ejs', data); } }); connection.end(); }); module.exports = router;
CREATE(新規に作成する)
新規にレコードを作成します。
var mysql = require('mysql'); var express = require('express'); var router = express.Router(); const mysql_setting = { host : 'ホスト', user : 'ユーザー', password : 'パスワード', database : '対象のデータベース' }; router.get('/', (req, res, next) => { var data = { title: 'CREATE', content: '新しいレコードを入力:' } res.render('create.ejs', data); }); router.post('/', (req, res, next) => { var n = req.body.name; var m = req.body.mail; var a = req.body.age; var data = {'name':n, 'mail':m, 'age':a}; var connection = mysql.createConnection(mysql_setting); connection.connect(); connection.query('insert into テーブル名 set ?', data, function(error, results, fields) { res.redirect('/'); }); connection.end(); }); module.exports = router;
READ(指定したIDの情報を表示)
ALLSHOWページのフォームに入力されたIDの
情報を表示します。
var mysql = require('mysql'); var express = require('express'); var router = express.Router(); const mysql_setting = { host : 'ホスト', user : 'ユーザー', password : 'パスワード', database : '対象のデータベース' }; router.post('/', (req, res, next) => { var id = req.body["id"]; var connection = mysql.createConnection(mysql_setting); connection.connect(); connection.query('SELECT * from テーブル名 where id = ?', id, function(error, results, fields) { if (error == null) { var data = { title : 'READ', content : 'id = ' + id + 'のレコード', mydata : results[0] } res.render('read.ejs', data); } } ); connection.end(); }); module.exports = router;
UPDATE(レコードの更新)
指定されたIDのレコードを編集します。
アクセス時は.getの処理でレコードの情報を表示し
.postで更新処理を行います。
var mysql = require('mysql'); var express = require('express'); var router = express.Router(); const mysql_setting = { host : 'ホスト', user : 'ユーザー', password : 'パスワード', database : '対象のデータベース' }; router.get('/', (req, res, next) => { var id = req.query.id; var connection = mysql.createConnection(mysql_setting); connection.connect(); connection.query('SELECT * from テーブル名 where id = ?', id, function(error, results, fields) { if (error == null) { var data = { title : 'UPDATE', content : 'id = ' + id + 'のレコード', mydata : results[0] } res.render('update.ejs', data); } } ); connection.end(); }); router.post('/', (req, res, next) => { var id = req.body["id"]; var n = req.body["name"]; var m = req.body["mail"]; var a = req.body["age"]; var data = {'name':n, 'mail':m, 'age':a}; var connection = mysql.createConnection(mysql_setting); connection.connect(); connection.query('update テーブル名 set ? where id = ?', [data, id], function (error, results, fields) { res.redirect('/'); } ); connection.end(); }); module.exports = router;
DELETE(レコードの削除)
指定されたIDのレコードを削除します。
アクセス時は.getの処理でレコードの情報を表示し
.postで指定されたレコードの削除処理を行います。
var mysql = require('mysql'); var express = require('express'); var router = express.Router(); const mysql_setting = { host : 'ホスト', user : 'ユーザー', password : 'パスワード', database : '対象のデータベース' }; router.get('/', (req, res, next) => { var id = req.query.id; var connection = mysql.createConnection(mysql_setting); connection.connect(); connection.query('SELECT * from テーブル名 where id = ?', id, function(error, results, fields) { if (error == null) { var data = { title : 'DELETE', content : 'id = ' + id + 'のレコード', mydata : results[0] } res.render('delete.ejs', data); } } ); connection.end(); }); router.post('/', (req, res, next) => { var id = req.body["id"]; var connection = mysql.createConnection(mysql_setting); connection.connect(); connection.query('delete from テーブル名 where id = ?', id, function(error, results, fields) { if (error != null){ console.log(error.message); } res.redirect('/'); } ); connection.end(); }); module.exports = router;
まとめ
作ってみましたが、改善すべき点がいくつもありますね。
mysql_settingなど、重複しています。
1箇所で設定してそれを使うようにしたほうがいいですね。
あと、入力値チェックも今回していないでのそれも行いたいな。
以上です。