はじめに
メンターさんに与えられた課題として、配列を仮想DBとし、それに対してCRUD処理を行うようにするAPIサーバーを実装します。
各CRUD処理1つに1記事という形にします。
GitHub
この記事のまとめ
- 最初の環境構築をした
- DB、コメントモデルを作成した
最初の環境
他に必要なライブラリがあれば都度インストールします。
仕様
用意するDB
- comment(Model)
- ID:数値、新しいコメントを作成するたびに自動で数値が1増える(オートインクリメント)、他のIDの値と重複してはならない
- username:文字列、ユーザーが手動で書き込む
- body:文字列、ユーザーが手動で書き込む
- createdAt:Date、コメントを作成した時点の日付をセットする
- updateAt:Date、コメントを作成した時点の日付をセットするが、新しくusernameとbodyを更新した場合、更新した時点の日付をセットする。
このDBを、配列Comments
にセットする。
機能一覧
-
「GET/api/comments」
リクエストを送ると、コメント一覧
がレスポンス値として返ってくる -
「POST/api/comments」
リクエストを送ると、新規にComment1件を作成し、作成されたComment
がレスポンス値として返ってくる -
「PUT/api/comments/:id」
リクエストを送ると、id値に紐づいたComment1件を更新して、更新したComment1件
がレスポンス値として返ってくる -
「DELETE/api/comment/:id」
リクエストを送ると、id値に紐づいたComment1件を削除して、削除したComment1件
がレスポンス値として返ってくる
ダミーDB、コメントモデルの作成
./models/Comment.js
const dayjs = require("dayjs");
const comments = [];
let nextId = 1;
class Comment {
constructor({ username, body }) {
this.id = nextId++;
this.username = username;
this.body = body;
this.createdAt = dayjs().format("YYYY年MM月DD日 HH:mm:ss");
this.updatedAt = dayjs().format("YYYY年MM月DD日 HH:mm:ss");
}
}
Day.js:JSの標準機能にはnew Date()
がありますが、今回は簡単に日時の出力の設定ができ、軽量なDays.jsを使用することにしました。
commentsとComment
グローバル空間に今回の仮想DBである配列comments
とnextID(CommentのID値)
をセットします。
その後Comment
クラスを作成、各情報を書き込んでいきます。
これでダミーDB、コメントモデルの作成は終了です。
テスト用データを作成
その後、後々テストで使用していくため、先にいくつかのComment
データを配列に入れておきます
./models/Comment.js
// テスト、確認用に配列に挿入するDBの作成
for (let i = 0; i < 5; i++) {
const comment = new Comment({
username: 'username' + i,
body: 'body' + i,
});
comments.push(comment);
}
次に、「「GET/api/comments」
リクエストを送ると、コメント一覧
がレスポンス値として返ってくる」機能を作っていきます