「webで何か」作るブログ

35歳という遅すぎるスタートをなんとかする為のブログです。基本的に自分にとっての役立ちメモ。

Node.JSとMySQLでDB書き込み。Nodeで簡易な品目メモを作るシリーズ。

Node.jsとexpressの基礎を学んだので、練習を兼ねて品目管理システムみたいなものを作ることにする。あくまで自分が使うメモなので、参考にならない人が多いかも。

このメモのざっくりとした流れ。

  1. expressのプロジェクトを用意する
  2. データベースを使えるようにする
  3. 品目名と数量を書き込めるようにする

環境

ホストマシン:mac os sierra

仮想マシンvagrant ubuntu

expressのプロジェクト準備

node.jsとexpress-generatorはインストールされてるとして、何はともあれまずはこれ。

コマンド

expressジェネレータで基本となるファイル群を作る。

express someProjectName なので、今回はexpress itemManager。

cd でプロジェクトフォルダに移って、npm install。

テンプレートエンジンはデフォルトでjade。

以上。

データベースを使えるようにする

MySQLのインストール

今回利用するのはMySQL

  1. apt-get update
  2. sudo apt-get install と sudo apt install mysql-server mysql-client

以上でインストール完了。

Sequel Proのインストール

DB作成のコマンドが面倒なためSequelProなるGUIツールで手軽に。

SSHで接続できなくて結構ハマったのだけど、以下の参考ページでなんとかクリア。感謝します。あと、なぜかSSHユーザーがubuntuになってたりしたので、もしハマったらssh-config確認。

mmiyauchi.com

データベース作成と接続 

NodeでMySQLを使うパッケージをインストール

npm install mysql

公式に習って接続してみる、ただし、なぜかcreateConnectionのところはcreatePoolにしてやっと動いた。理由はよくわかってない。

www.npmjs.com

teratail.com

var mysql = require('mysql');

var pool = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'root',
database: 'itemList'
});


module.exports = pool;

 

データベースに書き込む機能の作成

 接続ができたので、データベースへの書き込むプログラムを作る。

使用するフレームワークであるExpressの個人的な流れは以下。

新たな処理を作る時の個人的な流れ

  1. 変数にする場所を考えてviews/の中にjadeで見た目書く。
  2. どのURLに対してその内容を返すのか考えてroutes/にjsで処理を書く
  3. app.jsにモジュール読み込んでapp.useでURLと紐付けする

今回はトップページから品目と数量を書き込めるように、フォームを作ってDBへ書き込むので、既にあるindex.jadeにformを追加して、routes/index.jsにpostで来た時の処理を追加。query関数を使って書き込める。

 

router.post('/', function(req,res,next) {
var title = req.body.title;
var createdAt = moment().format('YYYY-MM-DD HH:mm:ss');
var query = 'INSERT INTO boards (title, created_at) VALUES
(
"' + title + '",
' + '
"' + createdAt + '"
)';
connection.query(query, function(err, rows) {
console.log(err);
res.redirect('/');
console.log(title);
console.log(createdAt);
});
});

 

f:id:pochiweb:20180517082426p:plain

 今回はここまで。