[Node.js] Sequelize
SequelizeはNodeです.jsのORMとして.
MySQL、Postgres、MariaDB、SQLite、Microsoft SQL Serverを使用します.
raw query文を使わずに簡単に処理できるライブラリ
Object Relational Mapping
リレーショナル・データベースのデータとオブジェクトをマッピングします.
既存のオブジェクトとテーブルの不一致を低減し、開発者がオブジェクトモデルの開発に専念できるようにします.
JavaにHibernateがあればNodejsにSequelizeがあります.
(mysqlを使用すると仮定)
モデルを定義する方法は
type : Data Type primaryKey:デフォルト鍵 autoIncrement:オートインクリメントオプション(シリアルタイプ) allowNull:NOT NULLか unique:UNIQUE値 comment:columnに関する情報 validate:columnのvalidation checkオプションを設定 timestamps:テーブルがいつ作成され、最近変更されたかを追跡できます tablename:実際のTable名 updatedAt createdAt 偏執狂:削除されたAt列がテーブルに追加されました
パラメータを使用してデータ・オブジェクトを定義して渡します.
WHERE条件文はパラメータとして渡すことができます.(省略可能) 詳細については、ここです。を参照してください.
where条件文が作成されていない場合、すべてのデータが削除されます. に外部キーを追加 を追加します.
MySQL、Postgres、MariaDB、SQLite、Microsoft SQL Serverを使用します.
raw query文を使わずに簡単に処理できるライブラリ
ORMとは?
Object Relational Mapping
リレーショナル・データベースのデータとオブジェクトをマッピングします.
既存のオブジェクトとテーブルの不一致を低減し、開発者がオブジェクトモデルの開発に専念できるようにします.
JavaにHibernateがあればNodejsにSequelizeがあります.
設定
(mysqlを使用すると仮定)
npm install sequelize
npm install mysql2
npm install --global sequelize-cli
初期化
sequelize init
初期化後のディレクトリの外観.
├── config
│ └── config.json
├── migrations
├── models
│ └── index.js
└── seeders
/config/config.json
→DBの接続情報を設定できます.(データベース、ユーザ名、パスワード、ホストなど)/models/index.js
→モデルディレクトリのファイルを読み込み、モデルとして定義します.migrations
→移行に必要なファイル(省略可能)seeders
→テストデータまたは基礎データを表に入れる場合(省略可能)モデルの定義
モデルを定義する方法は
define()
sequelize.define('객체이름', 스키마 정의, 테이블 설정)
module.exports = (sequelize, DataTypes) => {
var User = sequelize.define('User',
{
id:{
type : DataTypes.INTEGER,
unique : true
allowNull : false
},
passwd: {
type : DataTypes.STRING,
allowNull : false
}
},{
timestamps : false
}
)
User.associate = (models) => {
//associations can be defined here
}
return User
}
上記のモデルを作成できます.フィールドオプション
configオプション
CRUD
CREATE
create()
内部で実行INSERT
クエリー.パラメータを使用してデータ・オブジェクトを定義して渡します.
User.create({
id: 1,
passwd : "hello"
}).then(()=>{
console.log('success');
}.catch(error => {
throw error
})
READ
findAll()
内部で実行SELECT
クエリー.WHERE条件文はパラメータとして渡すことができます.(省略可能)
User.findAll({
where : { id : 1 }
})
それ以外はfindById()
findOne()
findOrCreate()
findAndCountAll()
有灯UPDATE
findOne()
メソッドを使用して、変更する部分を検索します.update()
User.findOne({
where : { id : 1 }
}).then( user => {
if(user) {
user.update({ passwd : "Hi" })
.then(() => console.log('success')
}
})
DELETE
destroy()
内部で実行DELETE
クエリーwhere条件文が作成されていない場合、すべてのデータが削除されます.
User.destroy({
where : { id : 1 }
}).then(()=>{
console.log('success');
})
関係の定義
User.associate = (models) => {
// 관계 정의
}
1:1マッピング
hasOne()
:親テーブルの関係を確立するターゲット(子)belongsTo()
:サブテーブルは、関係を確立するターゲット(親)から外部キーを取得し、1:Nマッピング
hasOne()
belongsTo()
N:Mマッピング
belongsTo()
:2つのテーブルを接続し、through
オプションを使用して中間テーブルの名前を指定します.マッピングオプション
as
:相対テーブルの名前を指定foreignKey
:外部キー名を指定참조 링크
https://gngsn.tistory.com/71
https://victorydntmd.tistory.com/32
https://baeharam.netlify.app/posts/Node.js/Node.js-Sequelize-%EB%8B%A4%EB%A3%A8%EA%B8%B0
https://gmlwjd9405.github.io/2019/02/01/orm.html
Reference
この問題について([Node.js] Sequelize), 我々は、より多くの情報をここで見つけました https://velog.io/@devchoi/Sequelizeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol