1
1

More than 5 years have passed since last update.

配列を仮想DBとした掲示板APIサーバの作成(1/5):はじめに・環境構築・DB、コメントモデルの作成

Last updated at Posted at 2019-05-11

はじめに

メンターさんに与えられた課題として、配列を仮想DBとし、それに対してCRUD処理を行うようにするAPIサーバーを実装します。
各CRUD処理1つに1記事という形にします。

GitHub

この記事のまとめ

  • 最初の環境構築をした
  • DB、コメントモデルを作成した

最初の環境

  • Node.js
    • Express:Node.jsの代表的なWebフレームワーク
    • ESlint:JSの検証ツール、エラーやタイポなどを見つけ、修正します。
    • Prettier:コードフォーマッタです、Eslintより綺麗に整形してくれるため、併用します。

他に必要なライブラリがあれば都度インストールします。

仕様

用意するDB

  • comment(Model)
    • ID:数値、新しいコメントを作成するたびに自動で数値が1増える(オートインクリメント)、他のIDの値と重複してはならない
    • username:文字列、ユーザーが手動で書き込む
    • body:文字列、ユーザーが手動で書き込む
    • createdAt:Date、コメントを作成した時点の日付をセットする
    • updateAt:Date、コメントを作成した時点の日付をセットするが、新しくusernameとbodyを更新した場合、更新した時点の日付をセットする。

このDBを、配列Commentsにセットする。

機能一覧

  1. 「GET/api/comments」リクエストを送ると、コメント一覧がレスポンス値として返ってくる
  2. 「POST/api/comments」リクエストを送ると、新規にComment1件を作成し、作成されたCommentがレスポンス値として返ってくる
  3. 「PUT/api/comments/:id」リクエストを送ると、id値に紐づいたComment1件を更新して、更新したComment1件がレスポンス値として返ってくる
  4. 「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である配列commentsnextID(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」リクエストを送ると、コメント一覧がレスポンス値として返ってくる」機能を作っていきます

配列を仮想DBとした掲示板の作成(2/5):GETリクエスト・サーバ起動編

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1