NodeJsとMySQLを連携してみた件
NodeJsのExpressを使ってMySQLのデータを扱えるようにしてみたいと思います。
今回はExpress及びMySQLはインストールが完了している前提となります。
インストールの方法が知りたい方は以下のリンクを参考にしてください。
NodeJsのExpressを使ってみた件
MySQLをインストールしてみた件
データベースを作成しよう
最初にデータベースを作成します。
データベースの情報は以下のようなデータベースを作成します。
データベース名: appData
テーブル名: users
カラム: id, name
データベース作成の手順は
1. 起動
2. ログイン
3. データベースの作成
4. データベースの選択
5. テーブルの作成
の順です。コマンドは以下を参照ください。
// MySQLの起動 brew services start mysql@5.7; // ログイン mysql --user=root --password; // データベースの作成 CREATE DATABASE appData; // データベースの選択 USE appData; // テーブルの作成 CREATE TABLE users (id INT AUTO_INCREMENT, name TEXT, PRIMARY KEY (id)) DEFAULT CHARSET=utf8;
データベースを作成したらデータを挿入しておきましょう。
INSERT INTO users(name) VALUES ('user01'); INSERT INTO users(name) VALUES ('user02'); INSERT INTO users(name) VALUES ('user03');
ユーザー3人分のデータを追加しました。
次はExpressの設定です。
ExpressからMySQLにアクセスしてみよう
Expressのapp.js(起動を制御しているjsファイル)ファイルからMySQLにアクセスしてみたいと思います。以下のコードを参考にapp.jsを書き換えてみてください。
const express = require('express'); const mysql = require('mysql'); const app = express(); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '[設定したパスワード]', database: 'appData' }); // MySQLアクセス時のエラー処理 connection.connect((err) => { if (err) { console.log('error connecting: ' + err.stack); return; } console.log('success'); });
次にデータベースの情報を取得しコンソールで表示されるようにしたいと思います。以下のコードを参考にapp.jsへ記述してみてください。
※index.ejsファイルが作成されている前提になっています。
app.get('/', (req, res) => { connection.query( 'SELECT * FROM users', (error, results) => { console.log(results); res.render('index.ejs'); } ); }); app.listen(3000);
コンソールに以下のテキストが出れば成功です。
[ RowDataPacket { id: 1, name: 'user01' },
RowDataPacket { id: 2, name: 'user02' },
RowDataPacket { id: 3, name: 'user03' } ]
次にejsにデータベースの数値を反映させましょう。
index.ejsに以下のコードを追加させ表示させます。
※タグはお好みのタグをお使いください。
<ul>
<% users.forEach((user) => {%>
<li>
<%= user.name %>
</li>
<% }) %>
</ul>
ブラウザに表示されれば完成です。
以上が簡単なデータベースとの連携になります。
まだまだ初歩的な連携のみですが、Javascriptで(別途HTML、CSS、SQLの知識は必要ですが)フロントとバックエンドの対応ができました。
-
前の記事
MySQLでデータベースを実際に作成してみた件 2020.06.29
-
次の記事
スクロールイベントを使いスクロール量を取得してみた件 2020.12.17