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

sequelize.jsを使ってみる。

$
0
0

sequelize.jsとは

node環境でDBを操作するための便利なライブラリです。
サーバーサイドをnode.jsで実装する際にexpress.jsと合わせて使用します。

CLIによるモデルの作成とDBマイグレーションについて説明した後、
ORMとしてのサーバーサイドでの呼び出し方法について記載します。

詳細はこちらをご参考ください。→https://sequelize.org/master/

導入方法

npm install --saveする。

npm install--save sequelize

モデルの作成とDBマイグレーション

モデル作成とDBへのマイグレーションはsequelize-cliを使用します。

インストール

npm install--save sequelize-cli

初期化処理

./node_modules/sequelize-cli/lib/sequelize init

コマンドを打つと、config、migrations、modelsといったディレクトリが作成されます。
config/config.jsonにDBへの接続設定を記入します。
migrationsはマイグレーションの管理をし、
modelsはモデルの管理をします。

モデルの作成

node_modules/.bin/sequelize model:create --name User --attributes userid:string,name:string,photo:text

DBへのマイグレーション

node_modules/.bin/sequelize db:migrate

2,呼び出し方と使い方

サーバーサイドでの呼び出し方と使い方について記載します。

呼び出し方

hoge.js
#オペレーションの導入(ver4.x~)const{Op}=require('sequelize');require('sequelize');#モデルの定義(cliで作成していた場合)上記cliで作成したModelを呼び出します。const{models:{Hoge,Fuga}}=require('cliで作成したモデルのPATH');#参考:モデルから読み込まれる部分(これがcliで作成したmodelの中に記載されています)sequelize.define('ModelName',{id:{type:DataTypes.INTEGER,primaryKey:true},name:DataTypes.STRING,},{timestamps:false,});

という感じです。

使い方

シンタックスには若干癖があります。
代表例としてSELECT文とUPDATE文を記載します。
返却されるのはPromiseオブジェクトです。
取得した後にthenのメソッドチェーンなどを使用することも可能です。

hoge.js
#SELECT(SELECTuseridasfuga,nameFROMHogeWHEREuserid=userid)Hoge.findAll({attributes:[['userid','fuga'],['name','name']],where:{[Op.or]:[{userid:{[Op.eq]:userid}}]},}));#UPDATE(UPDATEHogeSETuserid=userid,name=nameWHEREuserid=userid)Hoge.update({userid:userid,name:name},{where:{userid:userid}});

こんなエラーが出た

DeprecationWarning: String based operators are deprecated
という内容のエラーが出ることがあります。
要約すると、古いバージョンの書き方だから非推奨です。ということですが、
"sequelize": "^5.8.6"(4.44.3でエラーが出ました)のような感じでpackage.jsonを書き直すと直ります。

DeprecationWarning: String based operators are deprecated. Please use Symbol based operators for better security, read more at https://sequelize.org/master/manual/querying.html#operators

まとめ

クライアントをjavascriptフレームワーク使うなら、
サーバーサイドもjavascript(node.js)で書きたいということや、
大量のアクセスやリアルタイム処理に強いので、node.jsやexpress.jsを使用したいということもあるかと思います。
その際のDB周りの処理でsequelize.jsは便利です。
お役にたちましたら幸いです。


Viewing all articles
Browse latest Browse all 9042

Trending Articles