Sequelize中国語ドキュメントおよびsequelizeモジュールの説明
8202 ワード
本文はSequelize中国語APIドキュメントシリーズの文章の総合インデックスであり、ドキュメントインデックス 公式文書対照 3.1トップオブジェクト 3.2 3.3
リレーショナル・データベースを操作する場合、直接的な
1.ドキュメントインデックス
Sequelize中国語APIドキュメントシリーズは9編ありますが、本サイトでは公式ドキュメントのうち、関連オブジェクトの使用紹介(クイックエントリー、Sequelizeクラス Modelの定義、ModelクラスのAPI モデル(表)間の関係/関連モデル( クエリーと元のクエリー インスタンスの使用、Instanceクラス紹介 トランザクションの使用とTransactionクラス がサポートされる. Scopes役割ドメインの使用 フック関数の使用、Hooks関連API データ型クラスDataTypeとそのAPIは、 Migrationsデータ移行とQueryInterfaceオブジェクトSequelize
2.公式文書照合 Documentation Getting Started-クイックエントリー Working with table schemas-未翻訳 Models Definition- Usage- Querying- Scopes-Scopes役割ドメインの使用 Instances-インスタンスの作成と使用 Relations/Associations-リレーションシップ/関連の使用 Hooks-フック関数の使用 Transactions-トランザクションの使用 Working with legacy tables-未翻訳 Raw queries-元のクエリ Migrations-Migrationsデータ移行とQueryInterfaceオブジェクト API Sequelize- Model- Instance- Associations Overview-関連関係総合紹介 BelongsTo(1:1)-関係 に属する HasOne(1:1)- の関係を持つ HasMany(1:m)-1対の複数の関係 BelongsToMany(n:m)-多対多関係 Hooks- Transaction- Datatypes-データ型クラスDataTypeおよびそのAPI Deferrable-未翻訳 Errors-未翻訳
3.
3.1トップクラスのオブジェクト
データベース・アクセス・インスタンスの作成
サブオブジェクトアクセス
これらのオブジェクトの
3.2
上記のように、
3.3
または、
sequelize
モジュールとその内蔵オブジェクトのいくつかの紹介であり、Sequelizeをよりよく理解し、使用することを目的としています.sequelize
モジュールの説明Sequelize
Model
オブジェクトのインスタンス化Instance
インスタンスの作成リレーショナル・データベースを操作する場合、直接的な
ORM
操作の代わりに、複雑なビジネス・ロジックをカプセル化し、オブジェクト向けにデータ・テーブルを操作するSQL
フレームワークを選択します.Sequelize
はノード用である.jsとio.jsの非常に優れたORM
フレームワークで、PostgreSQL、MySQL、SQLite、MSSQLなどの多様な関係型データベースをサポートしています.1.ドキュメントインデックス
Sequelize中国語APIドキュメントシリーズは9編ありますが、本サイトでは公式ドキュメントのうち、関連オブジェクトの使用紹介(
Documentation
)部分とオブジェクトのAPI
部分を読みやすくするためにまとめました.ドキュメントインデックスは次のとおりです.Sequelize
クラスは、sequlize
モジュールを参照して上位オブジェクトを取得します.sequlize
インスタンスを作成します.また、Utils
ツールクラス、Transaction
トランザクションクラスなど、モジュール内の他のオブジェクトの参照を取得することもできます.インスタンスの作成後、Model
(モデル)の作成または定義、クエリーの実行、データベース構造の同期などの操作をインスタンスで行うことができます.Model
の使用は、データベース内のテーブルに相当し、「モデル」または「ファクトリ」と呼ばれることもある.Model
は、コンストラクション関数によって作成することはできませんが、sequlize.define
メソッドによってのみ定義またはsequlize.import
によってインポートできます.define
によってModel
を定義することは、モデルとデータテーブルとのマッピング関係を定義することに相当し、モデルによってテーブル記録の増加、削除、変更、検索などの操作を実現することができる.Model
)間には、一対一(One-To-One)、一対多(One-To-Many)など、様々な関係が存在する.モデル間の関係は本質的に、データベース内のテーブル間の関係記述であり、これらの関係により、データベース内のテーブル間のプライマリ/外部キー制約の作成を実現できます.これらの関係に基づいて、クエリー時にデータベースで実行される接続クエリーまたは複合クエリーSQL文を生成することもできます.Sequelize
には、Model
(モデル)のメソッドクエリーとsequelize.query()
を使用してSQL文ベースの元のクエリーの2つのクエリーがあります.Instance
クラスは、Model
オブジェクトによって作成されるべきデータベース内のレコードの行を表します.Instance
インスタンスには、Model.build
メソッドによって作成された非永続化インスタンスと、Model.create
メソッドによって作成された永続化インスタンスの2種類があります.Instance
は翻訳後も「インスタンス」と呼ばれますが、Sequelizeではクラスであり、そのインスタンスを「インスタンス」クラスのインスタンスと呼ぶべきです.Transaction
は、Sequelize
のトランザクション機能を実装するためのサブクラスであり、Sequelize.transaction()
メソッドを呼び出すことによってクラスのインスタンスを作成することができる.Sequelize
では、自動コミット/ロールバックがサポートする、またはユーザによる手動コミット/ロールバックScopes
-役割ドメインは、最終的にSQLクエリのwhere
句を生成する制限範囲を表します.モデル定義方法sequelize.define
のoption
パラメータ、またはModel.scope()
方法によって指定される.Hooks
(フック)とは、モデルのライフサイクルの特別な時点で呼び出される関数を指します.たとえば、モデルインスタンスが作成される前にbeforeCreate
関数が呼び出され、モデルインスタンスが作成されるとafterCreate
関数が呼び出されます.これらのフック関数を使用すると、ライフサイクルの特別な時点でモデルデータにアクセスまたは操作する能力があります.sequelize.define
メソッドを使用してモデルを定義する際に、一般的にモデル属性(列)のタイプtype
を指定します.これはデータ型を表し、Sequelizeは指定したタイプでデータベースにフィールドを作成します.これらのタイプはsequelizeモジュールのDataTypes
クラスに定義され、静的クラスがその属性またはメソッドを直接参照することができる.2.0.0
は、gulpに基づいてsequelize-cliとgulp-sequelizeを組み合わせた新しいCLI
(コマンドラインツール)を導入し、CLI
はデータ移行とプロジェクトブートをサポートします.移行により、既存のデータベースを別のステータスに移行できます.また、これらの移行ファイルは移行ファイルに保存されます.移行ファイルは、新しいステータスに到達する方法と、移行前の古いステータスに戻る方法を説明します.2.公式文書照合
Sequelize
の公式ドキュメントでは、Sequelize
モジュールの紹介は主にDocumentation
、API
の2つの部分に分かれています.Documentation
モジュール、モジュール内蔵オブジェクトなどの使用方法を紹介する.API
は、Sequelize
とその内蔵オブジェクトのAPIを紹介する.Sequelize中国語APIドキュメントには、ほとんどのオブジェクト使用紹介およびオブジェクトAPIの翻訳が含まれていますが、Errors
などのオブジェクトがあまり使用されていない場合は、必要に応じて公式ドキュメントを自分で確認してください.官文書とSequelize中国語API文書の対照関係は以下の通りである.Model
定義記述Model
モデルの使用Model
クエリーSequelize
クラスModel
クラスのAPI Instance
クラスのAPIHooks
クラスのAPI Transaction
クラス3.
sequelize
モジュール紹介sequelize
モジュールには、Sequelize
インスタンスを作成したり、他のサブオブジェクトの参照を取得したりすることができるトップレベルのオブジェクトsequlize
が含まれています.sequelize
モジュールの主なサブオブジェクトは、Model
モデルオブジェクト、Instance
インスタンスオブジェクト、Transaction
トランザクションオブジェクトなどである.また、sequelize
モジュールを使用して、Validator
検証オブジェクト、Utils
ツール、Promise
などのサブオブジェクトを内部で使用することもできます.3.1トップクラスのオブジェクト
Sequelize
モジュールをrequire('sequelize')
で参照すると、Sequelize
のプライマリクラスへのアクセス権が得られます.var Sequelize = require('sequelize');
データベース・アクセス・インスタンスの作成
Sequelize
はコンストラクション関数でもあり、このコンストラクション関数を使用して指定したデータベースへのアクセスインスタンス-sequelize
を作成できます.var sequelize = new Sequelize('database', 'username', 'password');
サブオブジェクトアクセス
sequelize
の中には、Model
、Instance
などのモジュール定義があるサブオブジェクト、ORM関連のサブオブジェクト、Validator
、Utils
などのsequelize
のモジュールに依存するモジュールもあり、これらのクラスには、エントリオブジェクトSequelize
またはsequelize
のインスタンスオブジェクトを介してアクセスできるものがあるが、Model
、Instance
のオブジェクトは、直接インスタンス化することはできない.これらのオブジェクトの
sequelize
への追加形式は、次のとおりです.Sequelize.prototype.Model = Sequelize.Model = Model;
Sequelize.prototype.Instance = Sequelize.Instance = Instance;
Sequelize.prototype.Utils = Sequelize.Utils = Utils;
Sequelize.prototype.Validator = Sequelize.Validator = require('validator');
3.2
Model
オブジェクトのインスタンス化上記のように、
Sequelize.Model
またはsequelize.Model
でModel
オブジェクトにアクセスできますが、new
で直接インスタンス化することはできません.sequelize
インスタンスは、sequlize.define
インスタンスのsequlize.import
メソッド定義またはModel
インポートによってのみ作成できます.// define Model
var User = sequelize.define('user', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
// import Model
// /path/to/models/project.js
module.exports = function(sequelize, DataTypes) {
return sequelize.define("project", {
name: DataTypes.STRING,
description: DataTypes.TEXT
})
}
var Project = sequelize.import(__dirname + "/path/to/models/project")
3.3
Instance
インスタンスの作成Instance
は、データテーブルの行を表し、オブジェクトも直接インスタンス化できません.Model
インスタンスがfind
またはcreate
などの操作を行うと自動的に作成され、コールバック関数で返されます.Instance
例には、永続化例、100永続化例の2種類がある.次のように、非永続化実列を作成できます.//
var Task = sequelize.define('task', {
title: Sequelize.STRING,
rating: { type: Sequelize.STRING, defaultValue: 3 }
})
// build Instance
var task = Task.build({title: 'very important task'})
Instance
インスタンスを作成すると、このレコードを変更保存するなどの操作ができます.task.save().then(function() {
//
})
または、
Model.create
の方法で永続化インスタンスを作成することができます.Task.create({ title: 'foo', description: 'bar', deadline: new Date() }).then(function(task) {
// task
})