前回の章ではPOSTした結果をサーバーが起動している間だけ値を保持するところまで作成しました
今回は、サーバーが停止しても値を保持するできるようにデータベースに値を保存するようにしていきます
あらかじめ、MySQLのインストールおよびユーザー等の設定は完了しておいてください
-
REST APIを自作してみる(その1) - ナストンのまとめ
仕事でREST APIにアクセスして情報を取得したり、情報を書き換えたりしたのでちょっと自分でも作ってみたいなと思ったの ...
続きを読む
MySQLのテーブルを作成する
userのテーブルを作成します、以下のコマンドを使用して作成してください
列としてはid列、name列、password列があります
id列は管理用、name列はユーザー名を保存するために、password列はユーザーのパスワードを
保存するために使用します
create table TODOLISTAPP.users (id int unsigned auto_increment not null, name varchar(255) unique, password varchar(255), PRIMARY KEY (id));
taskのテーブルを作成します、以下のコマンドを使用して作成してください
列としてはid列、user_id列、content列があります
id列は管理用、user_id列はユーザーと紐づく情報として、
content列はToDoの内容を保存するために使用しています
create table TODOLISTAPP.tasks (id int unsigned auto_increment not null, user_id int not null, content varchar(255) not null, PRIMARY KEY (id));
データベースにデータを登録する・データを取得する
前回まではPOSTされてきたデータを配列に格納していましたが、今回はそのデータをMySQLへと登録します
MySQLへ接続する
MySQLへ情報を保存するにしてもまずはMySQLに接続する必要があります
そのため、server.jsに以下を追加してMySQLへと接続します
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '設定しているrootのパスワード',
database: 'TODOLISTAPP'
});
MySQLに情報を保存する
POSTされてきたデータをMySQLへ保存します
user_idは本来はそれぞれのユーザーに応じたものが入りますが今回は固定にしています
app.post("/", (req, res) => {
try {
let todo = req.body.content;
connection.query(
`insert into tasks (user_id, content) values (1, '${todo}');`,
(error, results) => {
console.log('DBInsert Error: ' + error);
}
);
res.json({ message: "DB Insert Sucess" });
} catch {
res.json({ message: "DB Insert Failure" });
}
});
MySQLから情報を取得する
GET要求が来た際にMySQLのtasksテーブルに保存されているデータをすべて返却します
app.get("/", (req, res) => {
connection.query(
`select * from tasks;`,
(error, results) => {
console.log(error);
console.log(results);
if(results.length > 0) {
res.json({ todosList: results });
} else {
res.json({ message: "要素がありません" });
}
}
);
});
実際に実行すると問題なく、登録と取得ができました
最後に
これでサーバーが止まってもデータが保持されるようなりました
次回はユーザーの登録をできるようにしていきます