Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8866

sequelizeパッケージを初心者が使ってみる。

$
0
0

sequelizeとは

Node.jsにはデータベースを利用するためのパッケージがたくさん存在します。
しかし、データベースを扱うにはSQLというデータベースを操作する言語が必要になります。
sequelizeというパッケージを使えば、SQLを知らなくても、Node.jsでデータベースを利用することができます。

さらに詳しく

sequlizeは公式によるとORM(Object-relational mapping, オブジェクト関係マッピング)と呼ばれるものらしいです。
以下は引用です。

オブジェクト指向の概念とリレーショナルデータベースの概念を橋渡しする役割がORMです。オブジェクト指向とリレーショナルデータベースの相性はそれぞれの概念が異なるため、相性が良くありません。なぜなら、オブジェクト指向では、データをオブジェクトとして扱うのですが、リレーショナルデータベースではデータを2次元の表として扱うためギャップが生じてしまいます。ORMを利用することによって、オブジェクトとデータベース問い合わせの相互変換を行います。
引用:ORMとは?

sequlizeはPostgreSQL、MySQL、MariaDB、SQLite、MicrosoftSQLServerに対応しているそうです。

sequlizeを利用してみる。

今回はsequlizeでpostgreSQLを利用してみます。

前提として以下を完了しておいてください。

① Node.jsのイントール
② Yarnのインストール
③ PostgreSQLのインストール 参考:https://lets.postgresql.jp/map/install

sequlizeを使う前にデータベースを作っておきます。
PostgreSQLのpsqlターミナルを起動し、以下のコマンドを入力してください。

$ create database rensyu;

データベース名は何でも構いません。
ここではrensyuとしておきます。

データベースが完成したら、sequelizeのインストールを行なっていきます。
以下のコマンドを入力してください。

$ yarn add sequelize
$ yarn add pg
$ yarn add pg-hstore

参照:sequelize入門

インストールが終わったら、
sequelizeを利用するためのJSファイルを準備し、
そのファイル内に以下を書き込みます。
今回はシンプルにIDと名前と年齢だけのデータベースを作っていきます。

post.js
'use strict';constSequelize=require('sequelize');constsequelize=newSequelize('postgres://postgres:postgres@localhost/rensyu',{logging:false,define:{freezeTableName:true,timestamps:true}});constPost=sequelize.define('Post',{id:{type:Sequelize.INTEGER,autoIncrement:true,primaryKey:true},name:{type:Sequelize.STRING},age:{type:Sequelize.INTEGER}});Post.sync();module.exports=Post;

解説をしていきます。

constsequelize=newSequelize('postgres://postgres:postgres@localhost/rensyu',{logging:false,define:{freezeTableName:true,timestamps:true}});

これは、sequelizeのインスタンスを作成しています。
その際に、接続するデータベースを先ほど作成したものに設定しています。
postgresql://{ユーザー名}:{パスワード}@{ホスト名}/{データベース名}というようになっています。自分で作ったPostgreSQLのユーザー名やパスワードを利用してください。
loggingはデータベースに接続する際、コンソールログを行わない設定です。
defineのfreezeTableName: trueはテーブル名を固定する設定です。
timestampは自動的にcreatedAtという作成日時とupdatedAtという更新日時を自動的に追加してくれる設定です。

constPost=sequelize.define('Post',{id:{type:Sequelize.INTEGER,autoIncrement:true,primaryKey:true},name:{type:Sequelize.STRING},age:{type:Sequelize.INTEGER}});

こちらはデータベースのテーブルやデータを定義し、Postというオブジェクトに代入しています。
'Post'はテーブル名です。
id, name, ageはテーブルの列です。
それぞれに数字であるのか、文字であるのかなどの設定がされています。
idのprimaryKey: trueというのは、データベースを操作する上で参照の対象となる主キーを、idに設定しているという意味です。

Post.sync();module.exports=Post;

Post.sync();は、定義したPostというオブジェクトをデータベースに適用して同期を取っています。
module.exports = Post;は、オブジェクト自体をモジュールとして公開しています。

この他にもいろいろな設定オプションがあります。
https://sequelize.org/master/manual/getting-started.html

それでは、以上のデータベースを使ってみましょう。
適当なファイルを用意し、以下のような記述をします。

post-handler.js
constPost=require('./post');Post.create({name:name,age:age});

const Post = require('./post');はモジュールをインストールしています。
Post.createでデータベースにデータを保存しています。
あとは、EJSやPugなどのテンプレートエンジンを使えば、nameとageに好きな値を入れて保存ができます。

以上です。

参考:sequelize APIリファレンス
参考:N予備校 プログラミングコース


Viewing all articles
Browse latest Browse all 8866

Trending Articles