Sequelize
これはメインクラスであり、Sequelizeへのエントリーポイントです。
静的メソッドの概要
静的パブリックメソッド | ||
public static |
ANDクエリ |
since v2.0.0-dev3 |
public static |
cast関数への呼び出しを表すオブジェクトを作成します。 |
since v2.0.0-dev3 |
public static |
DB内の列を表すオブジェクトを作成します。これにより、クエリ内で別の列を参照できます。 |
since v2.0.0-dev3 |
public static |
データベース関数を表すオブジェクトを作成します。 |
since v2.0.0-dev3 |
public static |
postgres/sqlite/mysqlのJSONデータ型に対するネストされたwhere条件を表すオブジェクトを作成します。 |
|
public static |
リテラルを表すオブジェクトを作成します。 |
since v2.0.0-dev3 |
public static |
ORクエリ。 |
since v2.0.0-dev3 |
public static |
SequelizeでCLS (継続ローカルストレージ) を使用します。 |
|
public static |
attr = condition を指定する方法。 |
since v2.0.0-dev3 |
コンストラクタ概要
パブリックコンストラクタ | ||
public |
constructor(database: string, username: string, password: string, options: object) データベース名、ユーザー名、パスワードを指定してSequelizeをインスタンス化します。 |
メンバ概要
パブリックメンバ | ||
public |
models: {} モデルは、 |
メソッド概要
パブリックメソッド | ||
public |
async authenticate(options: object): Promise 認証を試行して接続をテストします。 |
|
public |
このsequelizeインスタンスで使用されているすべての接続を閉じ、インスタンスがガベージコレクションされるようにすべての参照を解放します。 |
|
public |
async createSchema(schema: string, options: object): Promise 新しいデータベーススキーマを作成します。 |
|
public |
データベースのテーブルを表す新しいモデルを定義します。 |
|
public |
このsequelizeインスタンスで定義されたすべてのテーブルを削除します。 |
|
public |
async dropAllSchemas(options: object): Promise すべてのスキーマを削除します。 |
|
public |
async dropSchema(schema: string, options: object): Promise 単一のスキーマを削除します。 |
|
public |
値をエスケープします。 |
|
public |
データベース名を返します。 |
|
public |
getDialect(): string 指定されたダイアレクトを返します。 |
|
public |
QueryInterfaceのインスタンスを返します。 |
|
public |
指定された名前のモデルが定義されているかどうかを確認します。 |
|
public |
すでに定義されているモデルを取得します。 |
|
public |
必要に応じてSequelizeの機能をすべてバイパスして、DBに対してクエリを実行します。 |
|
public |
ダイアレクトに基づいてランダムなfnを取得します。 |
|
public |
環境変数またはユーザー変数を設定するクエリを実行します。 |
|
public |
async showAllSchemas(options: object): Promise 定義されたすべてのスキーマを表示します。 |
|
public |
定義されたすべてのモデルをDBに同期します。 |
|
public |
async transaction(options: object, autoCallback: Function): Promise トランザクションを開始します。 |
|
public |
sequelizeモデルで定義されたすべてのテーブルを切り捨てます。 |
静的パブリックメソッド
public static cast(val: any, type: string): cast since v2.0.0-dev3 source
cast関数への呼び出しを表すオブジェクトを作成します。
パラメータ
名前 | 型 | 属性 | 説明 |
val | any | キャストする値 |
|
type | string | キャスト先の型 |
public static col(col: string): col since v2.0.0-dev3 source
DBの列を表すオブジェクトを作成します。これにより、クエリ内で別の列を参照できます。これは、`sequelize.fn`と組み合わせて使用すると便利なことがよくあります。fnへの生の文字列引数はエスケープされるためです。
パラメータ
名前 | 型 | 属性 | 説明 |
col | string | 列の名前 |
参照
- Sequelize#fn
public static fn(fn: string, args: any): fn since v2.0.0-dev3 source
データベース関数を表すオブジェクトを作成します。これは、where句とorder句の両方で検索クエリで使用でき、列定義のデフォルト値としても使用できます。関数内で列を参照する場合は、列が文字列ではなく列として適切に解釈されるように、`sequelize.col`を使用する必要があります。
パラメータ
名前 | 型 | 属性 | 説明 |
fn | string | 呼び出す関数 |
|
args | any | 以降のすべての引数は、関数の引数として渡されます。 |
例
instance.update({
username: sequelize.fn('upper', sequelize.col('username'))
});
public static json(conditionsOrPath: string | object, value: string | number | boolean): json source
postgres/sqlite/mysqlのJSONデータ型に対するネストされたwhere条件を表すオブジェクトを作成します。
public static literal(val: any): literal since v2.0.0-dev3 source
リテラルを表すオブジェクトを作成します。つまり、エスケープされないものです。
パラメータ
名前 | 型 | 属性 | 説明 |
val | any | リテラル値 |
public static useCLS(ns: object): object source
SequelizeでCLS(Continuation Local Storage)を使用します。Continuation Local Storageを使用すると、トランザクションコールバック内のすべてのクエリは、トランザクションオブジェクトを自動的に受信します。
提供されるCLS名前空間は、`Sequelize._cls`として保存されます。
パラメータ
名前 | 型 | 属性 | 説明 |
ns | object | CLS名前空間 |
public static where(attr: object, comparator: symbol, logic: string | object): * since v2.0.0-dev3 source
attr = condition を指定する方法。
attrは、`Model.rawAttributes`(たとえば、`Model.rawAttributes.id`または`Model.rawAttributes.name`)から取得したオブジェクトにすることができます。属性はモデル定義で定義する必要があります。属性は、sequelizeユーティリティ関数(`sequelize.fn`、`sequelize.col`など)のいずれかからのオブジェクトにすることもできます。
文字列属性の場合は、通常の `{where: {attr: something}}` 構文を使用します。文字列をエスケープしたくない場合は、`sequelize.literal`を使用します。
戻り値
* |
パブリックコンストラクター
public constructor(database: string, username: string, password: string, options: object) source
データベース名、ユーザー名、パスワードを指定してSequelizeをインスタンス化します。
パラメータ
名前 | 型 | 属性 | 説明 |
database | string |
|
データベースの名前 |
username | string |
|
データベースに対する認証に使用されるユーザー名。 |
password | string |
|
データベースに対する認証に使用されるパスワード。SQLiteのSQLCipher暗号化をサポートします。 |
options | object |
|
オプションを含むオブジェクト。 |
options.host | string |
|
リレーショナルデータベースのホスト。 |
options.port | number |
|
リレーショナルデータベースのポート。 |
options.username | string |
|
データベースに対する認証に使用されるユーザー名。 |
options.password | string |
|
データベースに対する認証に使用されるパスワード。 |
options.database | string |
|
データベースの名前。 |
options.dialect | string |
|
接続しているデータベースのダイアレクト。mysql、postgres、sqlite、db2、mariadb、mssqlのいずれかです。 |
options.dialectModule | string |
|
指定された場合は、このダイアレクトライブラリを使用します。たとえば、pgデータベースに接続するときにpgの代わりにpg.jsを使用する場合は、ここに「require("pg.js")」を指定する必要があります。 |
options.dialectModulePath | string |
|
指定された場合は、このパスからダイアレクトライブラリをロードします。たとえば、pgデータベースに接続するときにpgの代わりにpg.jsを使用する場合は、ここに「/path/to/pg.js」を指定する必要があります。 |
options.dialectOptions | object |
|
追加のオプションのオブジェクト。接続ライブラリに直接渡されます。 |
options.storage | string |
|
sqliteでのみ使用されます。デフォルトは ':memory:' |
options.protocol | string |
|
リレーショナルデータベースのプロトコル。 |
options.define | object |
|
モデル定義のデフォルトオプション。Model.initを参照してください。 |
options.query | object |
|
sequelize.queryのデフォルトオプション |
options.schema | string |
|
使用するスキーマ |
options.set | object |
|
sequelize.setのデフォルトオプション |
options.sync | object |
|
sequelize.syncのデフォルトオプション |
options.timezone | string |
|
データベースからJavaScriptの日付に日付を変換するときに使用されるタイムゾーン。タイムゾーンは、サーバーに接続するときにSET TIMEZONEを設定するためにも使用され、NOW、CURRENT_TIMESTAMP、およびその他の時間関連関数の結果が正しいタイムゾーンになるようにします。最適なクロスプラットフォームパフォーマンスを得るには、+/-HH:MM形式を使用します。moment.jsで使用されるタイムゾーンの文字列バージョン(例: 'America/Los_Angeles')も受け入れます。これは、夏時間の変更をキャプチャするのに役立ちます。 |
options.clientMinMessages | string | boolean |
|
(非推奨) PostgreSQLの`client_min_messages`セッションパラメータ。データベースのデフォルトを上書きしない場合は、`false`に設定します。 |
options.standardConformingStrings | boolean |
|
PostgreSQLの`standard_conforming_strings`セッションパラメータ。オプションを設定しない場合は、`false`に設定します。警告:これをfalseに設定すると脆弱性が露呈する可能性があり、推奨されません! |
options.logging | Function |
|
Sequelizeが何かをログに記録するたびに実行される関数。関数は複数のパラメータを受け取ることができますが、最初のパラメータのみが`console.log`によって出力されます。すべての値を印刷するには、`(...msg) => console.log(msg)`を使用します。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数(options.logging)の第2引数として渡します。 |
options.omitNull | boolean |
|
CREATE/UPDATE SQLクエリにnull値を値として渡すかどうかを定義するフラグです。 |
options.native | boolean |
|
ネイティブライブラリを使用するかどうかを定義するフラグです。現在、postgresでのみ有効です。 |
options.ssl | boolean |
|
接続をSSL経由で行うかどうかを定義するフラグです。 |
options.replication | boolean |
|
読み取り/書き込みレプリケーションを使用します。レプリケーションを有効にするには、readとwriteの2つのプロパティを持つオブジェクトを渡します。writeはオブジェクト(書き込みを処理する単一のサーバー)である必要があり、readはオブジェクトの配列(読み取りを処理する複数のサーバー)である必要があります。各読み取り/書き込みサーバーは、次のプロパティを持つことができます。 |
options.pool | object |
|
Sequelize接続プール構成。 |
options.pool.max | number |
|
プール内の最大接続数。 |
options.pool.min | number |
|
プール内の最小接続数。 |
options.pool.idle | number |
|
接続が解放されるまでにアイドル状態を維持できる最大時間(ミリ秒単位)。 |
options.pool.acquire | number |
|
プールがエラーをスローする前に接続を取得しようとする最大時間(ミリ秒単位)。 |
options.pool.evict | number |
|
sequelize-poolがアイドル接続を削除するまでの時間間隔(ミリ秒単位)。 |
options.pool.validate | Function |
|
接続を検証する関数。クライアントとともに呼び出されます。デフォルトの関数は、クライアントがオブジェクトであること、およびその状態が切断されていないことを確認します。 |
options.pool.maxUses | number |
|
接続を交換のために破棄するまでに使用できる回数。 |
options.quoteIdentifiers | boolean |
|
Postgresでテーブル名と属性を大文字と小文字を区別しないようにし、それらの二重引用符をスキップするには、 |
options.transactionType | string |
|
デフォルトのトランザクションタイプを設定します。利用可能なオプションについては、 |
options.isolationLevel | string |
|
デフォルトのトランザクション分離レベルを設定します。利用可能なオプションについては、 |
options.retry | object |
|
クエリを自動的に再試行するタイミングを制御するフラグのセット。 |
options.retry.match | 配列 |
|
エラーがこれらの文字列のいずれかに一致する場合にのみ、クエリを再試行します。 |
options.retry.max | number |
|
失敗したクエリが自動的に再試行される回数。SQL_BUSYエラーでの再試行を無効にするには、0に設定します。 |
options.typeValidation | boolean |
|
挿入および更新時、およびwhere句を使用した選択時に組み込み型バリデーターを実行します。たとえば、整数フィールドに渡される引数が整数のようなものであることを検証します。 |
options.operatorsAliases | object |
|
文字列ベースの演算子エイリアス。エイリアス演算子のセットを制限するには、オブジェクトを渡します。 |
options.hooks | object |
|
特定のライフサイクルイベントの前後に呼び出されるグローバルフック関数のオブジェクト。グローバルフックは、同じイベントに対して定義されたモデル固有のフックの後で実行されます(リストについては、 |
options.minifyAliases | boolean |
|
エイリアスを最小化する必要があるかどうかを定義するフラグ(主にPostgresの64文字のエイリアス文字制限を回避するのに役立ちます)。 |
options.logQueryParameters | boolean |
|
ログにバインドパラメーターを表示するかどうかを定義するフラグ。 |
例
// without password / with blank password
const sequelize = new Sequelize('database', 'username', null, {
dialect: 'mysql'
})
// with password and options
const sequelize = new Sequelize('my_database', 'john', 'doe', {
dialect: 'postgres'
})
// with database, username, and password in the options object
const sequelize = new Sequelize({ database, username, password, dialect: 'mssql' });
// with uri
const sequelize = new Sequelize('mysql://localhost:3306/database', {})
// option examples
const sequelize = new Sequelize('database', 'username', 'password', {
// the sql dialect of the database
// currently supported: 'mysql', 'sqlite', 'postgres', 'mssql'
dialect: 'mysql',
// custom host; default: localhost
host: 'my.server.tld',
// for postgres, you can also specify an absolute path to a directory
// containing a UNIX socket to connect over
// host: '/sockets/psql_sockets'.
// custom port; default: dialect default
port: 12345,
// custom protocol; default: 'tcp'
// postgres only, useful for Heroku
protocol: null,
// disable logging or provide a custom logging function; default: console.log
logging: false,
// you can also pass any dialect options to the underlying dialect library
// - default is empty
// - currently supported: 'mysql', 'postgres', 'mssql'
dialectOptions: {
socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock',
supportBigNumbers: true,
bigNumberStrings: true
},
// the storage engine for sqlite
// - default ':memory:'
storage: 'path/to/database.sqlite',
// disable inserting undefined values as NULL
// - default: false
omitNull: true,
// a flag for using a native library or not.
// in the case of 'pg' -- set this to true will allow SSL support
// - default: false
native: true,
// A flag that defines if connection should be over ssl or not
// - default: undefined
ssl: true,
// Specify options, which are used when sequelize.define is called.
// The following example:
// define: { timestamps: false }
// is basically the same as:
// Model.init(attributes, { timestamps: false });
// sequelize.define(name, attributes, { timestamps: false });
// so defining the timestamps for each model will be not necessary
define: {
underscored: false,
freezeTableName: false,
charset: 'utf8',
dialectOptions: {
collate: 'utf8_general_ci'
},
timestamps: true
},
// similar for sync: you can define this to always force sync for models
sync: { force: true },
// pool configuration used to pool database connections
pool: {
max: 5,
idle: 30000,
acquire: 60000,
},
// isolation level of each transaction
// defaults to dialect default
isolationLevel: Transaction.ISOLATION_LEVELS.REPEATABLE_READ
})
パブリックメンバ
パブリックメソッド
public async authenticate(options: object): Promise source
認証を試みて接続をテストします。SELECT 1+1 AS result
クエリを実行します。
パラメータ
名前 | 型 | 属性 | 説明 |
options | object |
|
クエリオプション |
public close(): Promise source
このsequelizeインスタンスで使用されているすべての接続を閉じ、インスタンスがガベージコレクションされるようにすべての参照を解放します。
通常、これはプロセス終了時に行われるため、複数のインスタンスを作成し、それらの一部をガベージコレクションする場合は、このメソッドを呼び出すだけで済みます。
public async createSchema(schema: string, options: object): Promise source
新しいデータベーススキーマを作成します。
注意: これは、postgresの用語でのスキーマであり、データベーステーブルではありません。mysqlとsqliteでは、このコマンドは何もしません。
public define(modelName: string, attributes: object, options: object): Model source
データベースのテーブルを表す新しいモデルを定義します。
テーブルの列は、2番目の引数として渡されるオブジェクトによって定義されます。オブジェクトの各キーは列を表します。
パラメータ
名前 | 型 | 属性 | 説明 |
modelName | string | モデルの名前。モデルは、この名前で |
|
属性 | object | 各属性がテーブルの列であるオブジェクト。Model.initを参照してください。 |
|
options | object |
|
これらのオプションは、Sequelizeコンストラクターに提供されるデフォルトの定義オプションとマージされ、Model.init()に渡されます。 |
例
sequelize.define('modelName', {
columnA: {
type: Sequelize.BOOLEAN,
validate: {
is: ["[a-z]",'i'], // will only allow letters
max: 23, // only allow values <= 23
isIn: {
args: [['en', 'zh']],
msg: "Must be English or Chinese"
}
},
field: 'column_a'
},
columnB: Sequelize.STRING,
columnC: 'MY VERY OWN COLUMN TYPE'
});
sequelize.models.modelName // The model will now be available in models under the name given to define
参照
options
オブジェクトとattributes
オブジェクトの詳細については、Model.initを参照してください。- モデルの基本ガイド
public async drop(options: object): Promise source
このSequelizeインスタンスで定義されたすべてのテーブルを削除します。これは、各モデルでModel.dropを呼び出すことで行われます。
参照
- オプションについては、Model.dropを参照してください。
public async dropAllSchemas(options: object): Promise source
すべてのスキーマを削除します。
注意: これは、postgresの用語でのスキーマであり、データベーステーブルではありません。mysqlとsqliteでは、これはすべてのテーブルを削除することと同等です。
public async dropSchema(schema: string, options: object): Promise source
単一のスキーマを削除します。
注意: これは、postgresの用語でのスキーマであり、データベーステーブルではありません。mysqlとsqliteでは、これはスキーマ名と一致するテーブルを削除します。
public isDefined(modelName: string): boolean source
指定された名前のモデルが定義されているかどうかを確認します。
パラメータ
名前 | 型 | 属性 | 説明 |
modelName | string | Sequelize.defineで定義されたモデルの名前 |
public model(modelName: string): Model source
すでに定義されているモデルを取得します。
パラメータ
名前 | 型 | 属性 | 説明 |
modelName | string | Sequelize.defineで定義されたモデルの名前 |
例外
* |
モデルが定義されていない場合(つまり、sequelize#isDefinedがfalseを返す場合)、エラーをスローします。 |
public async query(sql: string, options: object): Promise source
必要に応じてSequelizeの機能をすべてバイパスして、DBに対してクエリを実行します。
デフォルトでは、この関数は2つの引数を返します。結果の配列と、影響を受けた行数などを含むメタデータオブジェクトです。
メタデータが必要ないクエリ、たとえばSELECT
クエリなどを実行している場合は、クエリタイプを渡して、sequelizeに結果をフォーマットさせることができます。
const [results, metadata] = await sequelize.query('SELECT...'); // Raw query - use array destructuring
const results = await sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT }); // SELECT query - no destructuring
パラメータ
名前 | 型 | 属性 | 説明 |
sql | string | ||
options | object |
|
クエリオプション。 |
options.raw | boolean |
|
trueの場合、sequelizeはクエリの結果をフォーマットしたり、結果からモデルのインスタンスを作成したりしようとしません。 |
options.transaction | トランザクション |
|
クエリが実行されるトランザクション |
options.type | QueryTypes |
|
実行しているクエリのタイプ。クエリタイプは、結果が返される前にどのようにフォーマットされるかに影響します。タイプは文字列ですが、 |
options.nest | boolean |
|
trueの場合、 |
options.plain | boolean |
|
クエリタイプを |
options.replacements | object | Array |
|
|
options.bind | object | Array |
|
|
options.useMaster | boolean |
|
クエリタイプに関係なく、クエリが書き込みプールを使用するように強制します。 |
options.logging | Function |
|
SQLをログに記録するためにクエリの実行中に実行される関数。 |
options.instance | モデル |
|
クエリ結果を構築するために使用されるモデルのsequelizeモデルインスタンス。 |
options.model | typeof Model |
|
返されたモデルインスタンスを構築するために使用されるsequelizeモデル。 |
options.retry | object |
|
クエリを自動的に再試行するタイミングを制御するフラグのセット。 |
options.retry.match | 配列 |
|
エラーがこれらの文字列のいずれかに一致する場合にのみ、クエリを再試行します。 |
options.retry.max | 整数 |
|
失敗したクエリが自動的にリトライされる回数。 |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメーター(Postgresのみ) |
options.supportsSearchPath | boolean |
|
falseの場合、クエリにsearch_pathをプレフィックスとして付加しません(Postgresのみ) |
options.mapToModel | boolean |
|
|
options.fieldMap | object |
|
|
options.rawErrors | boolean |
|
|
参照
- インスタンスオプションの詳細については、Model.buildを参照してください。
public async set(variables: object, options: object): Promise source
環境変数またはユーザー変数を設定するクエリを実行します。変数は接続ごとに設定されるため、この関数にはトランザクションが必要です。MySQLまたはMariaDBでのみ動作します。
public async showAllSchemas(options: object): Promise source
定義されたすべてのスキーマを表示します。
注:これは、Postgresの言葉の意味でのスキーマであり、データベーステーブルではありません。mysqlとsqliteでは、これはすべてのテーブルを表示します。
public async sync(options: object): Promise source
定義されたすべてのモデルをDBに同期します。
パラメータ
名前 | 型 | 属性 | 説明 |
options | object |
|
同期オプション |
options.force | boolean |
|
forceがtrueの場合、各モデルは、独自のテーブルを作成しようとする前に、 |
options.match | RegExp |
|
同期する前に、データベース名に対して正規表現を照合します。これは、force:trueがテストで使用され、ライブコードでは使用されない場合の安全チェックです。 |
options.logging | boolean | Function |
|
SQLクエリをログに記録する関数、またはログ記録を行わない場合はfalse。 |
options.schema | string |
|
テーブルが作成されるスキーマ。これは、sequelize.defineで各テーブルごとに上書きできます。 |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメーター(Postgresのみ) |
options.hooks | boolean |
|
hooksがtrueの場合、beforeSync、afterSync、beforeBulkSync、afterBulkSyncフックが呼び出されます。 |
options.alter | boolean | object |
|
モデルに合うようにテーブルを変更します。追加の設定を行うには、オブジェクトを提供します。本番環境での使用はお勧めしません。さらに設定されていない場合、モデルで削除された列または型が変更された列のデータが削除されます。 |
options.alter.drop | boolean |
|
|
public async transaction(options: object, autoCallback: Function): Promise source
トランザクションを開始します。トランザクションを使用する場合は、クエリがそのトランザクションの下で実行されるように、options引数にトランザクションを渡す必要があります。Transactionを参照してください。
CLSが有効になっている場合、トランザクションはコールバック内で実行されるすべてのクエリに自動的に渡されます。
パラメータ
名前 | 型 | 属性 | 説明 |
options | object |
|
トランザクションオプション |
options.type | string |
|
可能なオプションについては、 |
options.isolationLevel | string |
|
可能なオプションについては、 |
options.deferrable | string |
|
制約を遅延させるか、すぐに確認するように設定します。 |
options.readOnly | boolean |
|
このトランザクションがデータの読み取りにのみ使用されるかどうか。sequelizeが読み取りレプリケーションサーバーの使用を許可するかどうかを判断するために使用されます。 |
options.logging | Function |
|
SQLをログに記録するためにクエリの実行中に実行される関数。 |
autoCallback | Function |
|
コールバックはトランザクションオブジェクトとともに呼び出され、Promiseを返す必要があります。Promiseが解決されると、トランザクションがコミットされます。Promiseが拒否されると、トランザクションがロールバックされます。 |
例
try {
const transaction = await sequelize.transaction();
const user = await User.findOne(..., { transaction });
await user.update(..., { transaction });
await transaction.commit();
} catch {
await transaction.rollback()
}
try {
await sequelize.transaction(transaction => { // Note that we pass a callback rather than awaiting the call with no arguments
const user = await User.findOne(..., {transaction});
await user.update(..., {transaction});
});
// Committed
} catch(err) {
// Rolled back
console.error(err);
}
const cls = require('cls-hooked');
const namespace = cls.createNamespace('....');
const Sequelize = require('sequelize');
Sequelize.useCLS(namespace);
// Note, that CLS is enabled for all sequelize instances, and all instances will share the same namespace
public async truncate(options: object): Promise source
sequelizeモデルを介して定義されたすべてのテーブルを切り捨てます。これは、各モデルでModel.truncate()
を呼び出すことで行われます。
参照
- 詳細については、Model.truncateを参照してください。