モデル
モデルはデータベース内のテーブルを表します。このクラスのインスタンスはデータベースの行を表します。
モデルインスタンスは、インスタンスが表す実際の値を格納するdataValues
プロパティの概念で動作します。デフォルトでは、dataValuesの値はインスタンスから直接アクセスすることもできます。つまり、
instance.field
// is the same as
instance.get('field')
// is the same as
instance.getDataValue('field')
ただし、field
に対してゲッターやセッターが定義されている場合は、dataValues
から値を返す代わりに、それらが呼び出されます。プロパティに直接アクセスしたり、get
を使用したりする方法が通常の使用には推奨されます。getDataValue
はカスタムゲッターでのみ使用する必要があります。
参照
- Sequelize#define ゲッターとセッターの詳細については、こちらを参照してください
静的メソッドの概要
静的パブリックメソッド | ||
public static |
モデルに新しいスコープを追加します。 |
|
public static |
async aggregate(attribute: string, aggregateFunction: string, options: object): Promise<DataTypes|object> 指定されたフィールドに対して集計メソッドを実行します |
|
public static |
この(ソース)と提供されたターゲットの間に関連付けを作成します。 |
|
public static |
belongsToMany(target: Model, options: object): BelongsToMany 結合テーブルとの N:M 関連付けを作成します。 |
|
public static |
新しいモデルインスタンスを構築します。 |
|
public static |
複数のインスタンスを一括で作成および挿入します。 |
|
public static |
指定された where 句に一致するレコード数をカウントします。 |
|
public static |
新しいモデルインスタンスを構築し、save を呼び出します。 |
|
public static |
1つ以上の列の値をデクリメントします。 |
4.36.0 以降 |
public static |
テーブルに対して describe クエリを実行します。 |
|
public static |
複数のインスタンスを削除するか、 |
|
public static |
このモデルが表すテーブルを削除します |
|
public static |
複数のインスタンスを検索します。 |
|
public static |
async findAndCountAll(options: object): Promise<{count: number|number[], rows: Model[]}> 指定されたオフセット/制限内でクエリに一致するすべての行を検索し、クエリに一致する行の合計数を取得します。 |
|
public static |
主キーで単一のインスタンスを検索します。 |
|
public static |
async findCreateFind(options: object): Promise<Model, boolean> トランザクション下では動作しない可能性のある、よりパフォーマンスの高い findOrCreate (postgres で動作します) は、find 呼び出しを実行します。空の場合は作成を試み、一意の制約の場合は再度検索を試みます。 |
|
public static |
単一のインスタンスを検索します。 |
|
public static |
async findOrBuild(options: object): Promise<Model, boolean> クエリに一致する行を検索するか、見つからない場合は行を構築します(ただし保存しません)。プロミスの成功結果は(インスタンス、構築済み)になります |
|
public static |
async findOrCreate(options: object): Promise<Model, boolean> クエリに一致する行を検索するか、見つからない場合は行を構築して保存します。プロミスの成功結果は(インスタンス、作成済み)になります |
|
public static |
getAttributes(): object | any モデルの属性を返します。 |
|
public static |
getTableName(): string | object スキーマを考慮して、モデルのテーブル名を取得します。 |
|
public static |
この(ソース)と提供されたターゲットの間に 1:m の関連付けを作成します。 |
|
public static |
この(ソース)と提供されたターゲットの間に関連付けを作成します。 |
|
public static |
1つ以上のカラムの値をインクリメントします。 |
|
public static |
DB内のテーブルを表すモデルを、属性とオプションで初期化します。 |
|
public static |
フィールドの最大値を検索します。 |
|
public static |
フィールドの最小値を検索します。 |
|
public static |
removeAttribute(attribute: string) モデル定義から属性を削除します。 |
|
public static |
|
|
public static |
このモデルにスキーマを適用します。 |
|
public static |
|
|
public static |
フィールドの合計を検索します。 |
|
public static |
このモデルをDBに同期します。つまり、テーブルを作成します。 |
|
public static |
モデルのすべてのインスタンスを切り捨てます。 |
|
public static |
スコープなしのモデルを取得します。 |
|
public static |
whereオプションに一致する複数のインスタンスを更新します。 |
|
public static |
単一の行を挿入または更新します。 |
コンストラクタの概要
パブリックコンストラクタ | ||
public |
constructor(values: object, options: object) 新しいモデルインスタンスを構築します。 |
メンバの概要
パブリックメンバ | ||
public |
isNewRecord: boolean: * このインスタンスがまだデータベースに永続化されていない場合にtrueを返します。 |
|
public get |
Sequelizeインスタンスへの参照 |
メソッドの概要
パブリックメソッド | ||
public |
changedが文字列で呼び出されると、 |
|
public |
1つ以上の列の値をデクリメントします。 |
|
public |
このインスタンスに対応する行を削除します。 |
|
public |
このインスタンスと |
|
public |
equalsOneOf(others: Array<Model>): boolean equalsを呼び出して、これが |
|
public |
キーが指定されていない場合は、仮想ゲッターも呼び出して、インスタンスのすべての値を返します。 |
|
public |
getDataValue(key: string): any 基になるデータ値の値を取得します。 |
|
public |
1つ以上のカラムの値をインクリメントします。 |
4.0.0以降 |
public |
インスタンスが「ソフトデリート」されているかどうかを判断するヘルパーメソッド。 |
|
public |
|
|
public |
現在のインスタンスをその場でリフレッシュします。つまり、 |
|
public |
このインスタンスに対応する行を復元します。 |
|
public |
このインスタンスを検証し、検証に合格した場合、データベースに永続化します。 |
|
public |
|
|
public |
setDataValue(key: string, value: any) 基になるデータ値を更新します |
|
public |
インスタンスを JSON 表現に変換します。 |
|
public |
これは |
|
public |
モデル定義で設定された検証ルールに従って、このインスタンスの属性を検証します。 |
|
public |
このインスタンスのクエリを表すオブジェクトを取得します。 |
静的パブリックメソッド
public static addScope(name: string, scope: object | Function, options: object) ソース
モデルに新しいスコープを追加します。これは特に、含めるモデルがこのモデルが定義された時点で使用できない場合に、include を持つスコープを追加するのに役立ちます。
デフォルトでは、同じ名前のスコープが既に存在する場合はエラーがスローされます。このエラーを抑制するには、オプション オブジェクトで override: true
を渡します。
public static async aggregate(attribute: string, aggregateFunction: string, options: object): Promise<DataTypes|object> ソース
指定されたフィールドに対して集計メソッドを実行します
パラメーター
名前 | 型 | 属性 | 説明 |
attribute | string | 集計する属性。フィールド名または * を指定できます。 |
|
aggregateFunction | string | 集計に使用する関数 (例: sum、max など)。 |
|
options | object |
|
クエリ オプション。完全なオプションについては、sequelize.query を参照してください。 |
options.where | object |
|
検索属性のハッシュ。 |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
options.dataType | DataTypes | string |
|
結果の型。 |
options.distinct | boolean |
|
集計対象のフィールドに DISTINCT を適用します |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.plain | boolean |
|
|
public static belongsTo(target: Model, options: object): BelongsTo ソース
これ (ソース) と提供されたターゲットとの間にアソシエーションを作成します。外部キーはソースに追加されます。
パラメーター
名前 | 型 | 属性 | 説明 |
target | モデル | ターゲット モデル |
|
options | object |
|
belongsTo アソシエーション オプション |
options.hooks | boolean |
|
カスケードによって関連付けられたモデルが削除されたときに、before-/afterDestroy フックを実行する場合は true に設定します。たとえば、 |
options.as | string |
|
このモデルのエイリアス (単数形)。 |
options.foreignKey | string | object |
|
ソース テーブルの外部キー属性の名前、または外部列の型定義を表すオブジェクト (構文については |
options.targetKey | string |
|
ターゲット テーブルのアソシエーションのキーとして使用する属性の名前。デフォルトはターゲット テーブルの主キーです |
options.onDelete | string |
|
foreignKey が null を許可する場合は SET NULL、それ以外の場合は NO ACTION |
options.onUpdate | string |
|
'ON UPDATE' を設定します |
options.constraints | boolean |
|
外部キーで更新時および削除時の制約を有効にする必要があります。 |
例
Profile.belongsTo(User) // This will add userId to the profile table
public static belongsToMany(target: Model, options: object): BelongsToMany ソース
結合テーブルを使用して N:M アソシエーションを作成します。through
の定義が必要です。
パラメーター
名前 | 型 | 属性 | 説明 |
target | モデル | ターゲット モデル |
|
options | object | belongsToMany アソシエーション オプション |
|
options.hooks | boolean |
|
カスケードによって関連付けられたモデルが削除されたときに、before-/afterDestroy フックを実行する場合は true に設定します。たとえば、 |
options.through | Model | string | object | N:M アソシエーションでソースとターゲットを結合するために使用されるテーブルの名前。自分でジャンクション テーブルを定義して追加の属性を追加する場合は、sequelize モデルも指定できます。 |
|
options.through.model | モデル |
|
N:M アソシエーションの両側を結合するために使用されるモデル。 |
options.through.scope | object |
|
through モデルでのアソシエーションの作成と検索のデフォルトに使用されるキー/値セット。(through モデルに属性を追加することを忘れないでください) |
options.through.unique | boolean |
|
true の場合、使用される外部キーから一意のキーが生成されます (スコープを使用するときにこれをオフにして特定のユニーク キーを作成することをお勧めします) |
options.through.paranoid | boolean |
|
true の場合、生成された結合テーブルはパラノイドになります |
options.as | string | object |
|
このアソシエーションのエイリアス。文字列を指定する場合は、複数形である必要があります。また、node.inflection を使用して単数形に変換されます。単数形バージョンを自分で制御する場合は、 |
options.foreignKey | string | object |
|
結合テーブルの外部キーの名前(ソースモデルを表す)または、外部キー列の型定義を表すオブジェクト(構文については |
options.otherKey | string | object |
|
結合テーブルの外部キーの名前(ターゲットモデルを表す)または、他の列の型定義を表すオブジェクト(構文については |
options.scope | object |
|
ターゲットでアソシエーションの作成および検索のデフォルトに使用されるキー/値のセット。(N:Mではsqliteはサポートされていません) |
options.timestamps | boolean |
|
結合モデルにタイムスタンプを持たせるかどうか |
options.onDelete | string |
|
これがn:mの場合カスケード、1:mの場合はNULLを設定 |
options.onUpdate | string |
|
|
options.constraints | boolean |
|
外部キーで更新時および削除時の制約を有効にする必要があります。 |
例
// Automagically generated join model
User.belongsToMany(Project, { through: 'UserProjects' })
Project.belongsToMany(User, { through: 'UserProjects' })
// Join model with additional attributes
const UserProjects = sequelize.define('UserProjects', {
started: Sequelize.BOOLEAN
})
User.belongsToMany(Project, { through: UserProjects })
Project.belongsToMany(User, { through: UserProjects })
public static build(values: object | Array, options: object): Model | Array<Model> source
新しいモデルインスタンスを構築します。
パラメーター
名前 | 型 | 属性 | 説明 |
values | object | Array | キーと値のペアのオブジェクトまたはそのような配列。配列の場合、関数はインスタンスの配列を返します。 |
|
options | object |
|
インスタンスの作成オプション |
options.raw | boolean |
|
trueに設定すると、値はフィールドと仮想セッターを無視します。 |
options.isNewRecord | boolean |
|
これは新しいレコードですか? |
options.include | Array |
|
includeオプションの配列 - プリフェッチ/インクルードされたモデルインスタンスを構築するために使用されます。 |
public static async bulkCreate(records: Array, options: object): Promise<Array<Model>> source
複数のインスタンスを一括で作成および挿入します。
成功ハンドラにはインスタンスの配列が渡されますが、これらはDB内の行の状態を完全に表していない可能性があることに注意してください。これは、MySQLとSQLiteが、複数のレコードにマッピングできる方法で、自動生成されたIDやその他のデフォルト値を自動的に取得することを容易にしていないためです。新しく作成された値のインスタンスを取得するには、再度クエリする必要があります。
バリデーションが失敗した場合、promiseは配列のようなAggregateErrorで拒否されます。
パラメーター
名前 | 型 | 属性 | 説明 |
records | Array | インスタンスを作成するためのオブジェクト(キー/値ペア)のリスト |
|
options | object |
|
一括作成オプション |
options.fields | Array |
|
挿入するフィールド(デフォルトはすべてのフィールド) |
options.validate | boolean |
|
各行が挿入前に検証される必要があるかどうか。1つの行が検証に失敗した場合、挿入全体が失敗します。 |
options.hooks | boolean |
|
一括作成フックの前/後に実行しますか? |
options.individualHooks | boolean |
|
個々のインスタンスに対して作成フックの前/後に実行しますか? options.hooksがtrueの場合、BulkCreateフックは引き続き実行されます。 |
options.ignoreDuplicates | boolean |
|
主キーの重複値を無視しますか?(MSSQLまたはPostgres <9.5ではサポートされていません) |
options.updateOnDuplicate | Array |
|
行キーが既に存在する場合に更新するフィールド(重複キーの更新時)?(MySQL、MariaDB、SQLite >= 3.24.0、およびPostgres >= 9.5でのみサポートされています)。 |
options.conflictAttributes | Array |
|
クエリのON CONFLICT部分の競合フィールドのオプションのオーバーライド。Postgres >= 9.5およびSQLite >= 3.24.0でのみサポートされています。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
options.returning | boolean | Array |
|
trueの場合、定義されたすべての値を取得するためにRETURNING <モデル列>を追加します。列名の配列の場合、特定の列を取得するためにRETURNING <列>を追加します(Postgresのみ)。 |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
public static async count(options: object): Promise<number> source
指定された where 句に一致するレコード数をカウントします。
include
オプションを指定した場合、一致するアソシエーションの数が代わりにカウントされます。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
options |
options.where | object |
|
検索属性のハッシュ。 |
options.include | object |
|
includeオプション。詳細については、 |
options.paranoid | boolean |
|
削除されていないレコードのみをカウントするには、 |
options.distinct | boolean |
|
主キーまたはoptions.colにCOUNT(DISTINCT(col))を適用します。 |
options.col | string |
|
COUNT()を適用する必要がある列 |
options.attributes | Array |
|
|
options.group | Array |
|
複雑なカウントを作成するため。必要に応じて複数の行を返します。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
public static async create(values: object, options: object): Promise<Model> source
新しいモデルインスタンスを構築し、save を呼び出します。
パラメーター
名前 | 型 | 属性 | 説明 |
values | object | 新しいレコードを作成するためのデータ値のハッシュ |
|
options | object |
|
作成およびクエリのオプション |
options.raw | boolean |
|
trueに設定すると、値はフィールドと仮想セッターを無視します。 |
options.isNewRecord | boolean |
|
これは新しいレコードですか? |
options.include | Array |
|
includeオプションの配列 - プリフェッチ/インクルードされたモデルインスタンスを構築するために使用されます。 |
options.fields | string[] |
|
データベース列を表す文字列のオプションの配列。フィールドが指定されている場合、それらの列のみが検証および保存されます。 |
options.silent | boolean |
|
trueの場合、updatedAtタイムスタンプは更新されません。 |
options.validate | boolean |
|
falseの場合、バリデーションは実行されません。 |
options.hooks | boolean |
|
作成/更新の前と後に + バリデーションフックを実行します |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
options.returning | boolean | Array |
|
定義されたすべての値を取得するためにRETURNING <モデル列>を追加します。列名の配列の場合、特定の列を取得するためにRETURNING <列>を追加します(Postgresのみ)。 |
public static async decrement(fields: string | Array | object, options: object): Promise<Model[], ?number> since 4.36.0 source
1つ以上の列の値を減らします。これはデータベースで行われるため、インスタンスに現在保存されている値は使用されません。減算は、sql SET column = column - X WHERE foo = 'bar'
クエリを使用して行われます。インスタンスへの減算後の正しい値を取得するには、リロードする必要があります。
戻り値
Promise<Model[], ?number> | 影響を受ける行の配列と、 |
例
Model.decrement('number', { where: { foo: 'bar' });
Model.decrement(['number', 'count'], { by: 2, where: { foo: 'bar' } });
// `by` is ignored, since each column has its own value
Model.decrement({ answer: 42, tries: -1}, { by: 2, where: { foo: 'bar' } });
public static async describe(schema: string, options: object): Promise source
テーブルに対して describe クエリを実行します。
public static async destroy(options: object): Promise<number> source
複数のインスタンスを削除するか、paranoid
が有効になっている場合は、それらの deletedAt タイムスタンプを現在の時刻に設定します。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object | 破棄オプション |
|
options.where | object |
|
破棄をフィルタリングする |
options.hooks | boolean |
|
一括破棄フックの前/後に実行しますか? |
options.individualHooks | boolean |
|
trueに設定すると、destroyはwhereパラメーターに一致するすべてのレコードをSELECTし、各行で破棄フックの前/後を実行します。 |
options.limit | number |
|
削除する行数 |
options.force | boolean |
|
deletedAtを現在のタイムスタンプに設定する代わりに削除します( |
options.truncate | boolean |
|
trueに設定すると、それをサポートする方言はDELETE FROMの代わりにTRUNCATEを使用します。テーブルが切り捨てられると、whereオプションとlimitオプションは無視されます。 |
options.cascade | boolean |
|
TRUNCATEと組み合わせてのみ使用されます。指定されたテーブル、またはCASCADEによってグループに追加されたテーブルへの外部キー参照があるすべてのテーブルを切り捨てます。 |
options.restartIdentity | boolean |
|
TRUNCATEと組み合わせてのみ使用されます。切り捨てられたテーブルの列が所有するシーケンスを自動的に再開します。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
public static async drop(options: object): Promise source
このモデルが表すテーブルを削除します
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
drop オプション |
options.cascade | boolean |
|
ビューなど、このテーブルに依存するすべてのオブジェクトも削除します。Postgresでのみ動作します。 |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
public static async findAll(options: object): Promise<Array<Model>> source
複数のインスタンスを検索します。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
検索範囲を記述するオプションのハッシュ |
options.where | object |
|
検索を記述する属性のハッシュ。上記の例を参照してください。 |
options.attributes | Array<string> | object |
|
選択したい属性のリスト、または `include` および `exclude` キーを持つオブジェクト。属性の名前を変更するには、2つの要素を持つ配列を渡すことができます。最初の要素はDB内の属性の名前(または `Sequelize.literal`、 `Sequelize.fn` などの式)、2番目の要素は返されるインスタンスで属性に付けたい名前です。 |
options.attributes.include | Array<string> |
|
モデルのすべての属性に加えて、いくつかの追加属性を選択します。集計に便利です。例えば、`{ attributes: { include: [[sequelize.fn('COUNT', sequelize.col('id')), 'total']] }` |
options.attributes.exclude | Array<string> |
|
モデルのすべての属性を選択しますが、いくつかを除外します。セキュリティ上の目的で便利です。例えば、`{ attributes: { exclude: ['password'] } }` |
options.paranoid | boolean |
|
trueの場合、削除されていないレコードのみが返されます。falseの場合、削除されたレコードと削除されていないレコードの両方が返されます。モデルで `options.paranoid` が true の場合にのみ適用されます。 |
options.include | Array<object|Model|string> |
|
左結合を使用して、積極的にロードするアソシエーションのリスト。サポートされているのは、`{ include: [ Model1, Model2, ...]} `、`{ include: [{ model: Model1, as: 'Alias' }]} `、または ` { include: ['Alias']} `のいずれかです。アソシエーションが `as` で設定されている場合(例:`X.hasMany(Y, { as: 'Z' }`)、Yを積極的にロードするときは、as属性でZを指定する必要があります。 |
options.include[].model | モデル |
|
積極的にロードしたいモデル |
options.include[].as | string |
|
積極的にロードしたいモデルがエイリアスされている場合、関係のエイリアス。`hasOne` / `belongsTo` の場合、これは単数形の名前にする必要があります。`hasMany` の場合は複数形の名前にする必要があります。 |
options.include[].association | アソシエーション |
|
積極的にロードしたいアソシエーション。(モデル/asペアを提供する代わりにこれを使用できます) |
options.include[].where | object |
|
子モデルに適用するWhere句。`required: false` を明示的に設定しない限り、これは積極的なロードを内部結合に変換することに注意してください。 |
options.include[].or | boolean |
|
ON句とWHERE句をANDではなくORで結合するかどうか。 |
options.include[].on | object |
|
結合のための独自のON条件を提供します。 |
options.include[].attributes | Array<string> |
|
子モデルから選択する属性のリスト |
options.include[].required | boolean |
|
trueの場合、内部結合に変換されます。つまり、親モデルは一致する子がある場合にのみロードされます。`include.where` が設定されている場合はtrue、それ以外の場合はfalseです。 |
options.include[].right | boolean |
|
trueの場合、ダイアレクトがサポートしている場合は、右結合に変換されます。`include.required` が true の場合は無視されます。 |
options.include[].separate | boolean |
|
trueの場合、関連付けられたインスタンスをフェッチするために別のクエリを実行します。hasManyアソシエーションでのみサポートされます |
options.include[].limit | number |
|
結合された行を制限します。include.separate = true でのみサポートされます |
options.include[].through.as | string |
|
結合モデルのエイリアス。デフォルトのモデル名とは異なる名前を付けたい場合に指定します。 |
options.include[].through.paranoid | boolean |
|
trueの場合、削除されていないレコードのみが結合テーブルから返されます。falseの場合、削除されたレコードと削除されていないレコードの両方が返されます。中間モデルがパラノイドの場合にのみ適用されます。 |
options.include[].through.where | object |
|
belongsToMany関係の結合モデルでフィルタリング |
options.include[].through.attributes | Array |
|
belongsToMany関係の結合モデルから選択する属性のリスト |
options.include[].include | Array<object|Model|string> |
|
さらにネストされた関連モデルをロードします |
options.include[].duplicating | boolean |
|
includeを重複としてマークすると、サブクエリの使用が防止されます。 |
options.order | Array | fn | col | literal |
|
順序を指定します。配列を使用すると、ソートする列/関数を複数指定できます。各要素は、2つの要素を持つ配列でさらにラップできます。最初の要素はソートする列/関数、2番目の要素は方向です。例:`order: [['name', 'DESC']]`。このように、列はエスケープされますが、方向はエスケープされません。 |
options.limit | number |
|
結果の制限 |
options.offset | number |
|
結果のオフセット |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.lock | string | object |
|
選択した行をロックします。可能なオプションは、transaction.LOCK.UPDATEとtransaction.LOCK.SHAREです。Postgresは、transaction.LOCK.KEY_SHARE、transaction.LOCK.NO_KEY_UPDATE、および結合による特定のモデルロックもサポートしています。 |
options.skipLocked | boolean |
|
ロックされた行をスキップします。Postgresでのみサポートされています。 |
options.raw | boolean |
|
未加工の結果を返します。詳細については、sequelize.queryを参照してください。 |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
options.having | object |
|
Havingオプション |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
options.rejectOnEmpty | boolean | Error |
|
レコードが見つからない場合にエラーをスローします |
options.dotNotation | boolean |
|
ドットを含む同じ属性/列名を持つテーブルを含めることを許可します。 |
options.nest | boolean |
|
trueの場合、`.`で区切られたプロパティ名を持つオブジェクトをネストされたオブジェクトに変換します。 |
例
Model.findAll({
where: {
attr1: 42,
attr2: 'cake'
}
})
# WHERE attr1 = 42 AND attr2 = 'cake'
const {gt, lte, ne, in: opIn} = Sequelize.Op;
Model.findAll({
where: {
attr1: {
[gt]: 50
},
attr2: {
[lte]: 45
},
attr3: {
[opIn]: [1,2,3]
},
attr4: {
[ne]: 5
}
}
})
# WHERE attr1 > 50 AND attr2 <= 45 AND attr3 IN (1,2,3) AND attr4 != 5
const {or, and, gt, lt} = Sequelize.Op;
Model.findAll({
where: {
name: 'a project',
[or]: [
{id: [1, 2, 3]},
{
[and]: [
{id: {[gt]: 10}},
{id: {[lt]: 100}}
]
}
]
}
});
# WHERE `Model`.`name` = 'a project' AND (`Model`.`id` IN (1, 2, 3) OR (`Model`.`id` > 10 AND `Model`.`id` < 100));
参照
- 可能な演算子の演算子 __Alias__: _all_ クエリが成功した場合、Modelインスタンスの配列でpromiseが解決されます。
- Sequelize#query
public static async findAndCountAll(options: object): Promise<{count: number|number[], rows: Model[]}> source
指定されたオフセット/制限内で、クエリに一致するすべての行を検索し、クエリに一致する行の総数を取得します。これはページングに非常に役立ちます
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
findAllオプションを参照してください |
例
const result = await Model.findAndCountAll({
where: ...,
limit: 12,
offset: 12
});
# In the above example, `result.rows` will contain rows 13 through 24, while `result.count` will return the total number of rows that matched your query.
# When you add includes, only those which are required (either because they have a where clause, or because `required` is explicitly set to true on the include) will be added to the count part.
# Suppose you want to find all users who have a profile attached:
User.findAndCountAll({
include: [
{ model: Profile, required: true}
],
limit: 3
});
# Because the include for `Profile` has `required` set it will result in an inner join, and only the users who have a profile will be counted. If we remove `required` from the include, both users with and without profiles will be counted
参照
- findおよびクエリオプションの仕様については、Model.findAllを参照してください
- カウントオプションの仕様については、Model.countを参照してください
public static async findByPk(param: number | bigint | string | Buffer, options: object): Promise<Model> source
主キーで単一のインスタンスを検索します。
パラメーター
名前 | 型 | 属性 | 説明 |
param | number | bigint | string | Buffer | 目的のインスタンスの主キーの値。 |
|
options | object |
|
find オプション |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
参照
- オプションの詳細な説明については、Model.findAllを参照してください。options.whereはサポートされていないことに注意してください。
public static async findCreateFind(options: object): Promise<Model, boolean> source
トランザクション下では動作しない可能性のある、よりパフォーマンスの高い findOrCreate (postgres で動作します) は、find 呼び出しを実行します。空の場合は作成を試み、一意の制約の場合は再度検索を試みます。
参照
- findおよびオプションの完全な仕様については、Model.findAllを参照してください
public static async findOne(options: object): Promise<Model|null> ソース
単一のインスタンスを検索します。最初に見つかったインスタンスを返し、見つからなかった場合は null を返します。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
検索範囲を記述するオプションのハッシュ |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
参照
- オプションの説明については、Model.findAll を参照してください。
public static async findOrBuild(options: object): Promise<Model, boolean> ソース
クエリに一致する行を検索するか、見つからない場合は行を構築します(ただし保存しません)。プロミスの成功結果は(インスタンス、構築済み)になります
public static async findOrCreate(options: object): Promise<Model, boolean> ソース
クエリに一致する行を検索するか、見つからない場合は行を構築して保存します。プロミスの成功結果は(インスタンス、作成済み)になります
options
オブジェクトにトランザクションが渡されない場合、find の後、挿入呼び出しの前に、別の接続によって一致する行が作成されるという競合状態を防ぐために、新しいトランザクションが内部的に作成されます。ただし、SQLite では、あるトランザクションが挿入し、別のトランザクションが最初のトランザクションがコミットする前に選択しようとする場合など、このケースを常に処理できるわけではありません。この場合、sequelize.TimeoutError のインスタンスが代わりにスローされます。トランザクションが作成される場合は、代わりにセーブポイントが作成され、一意制約違反は内部的に処理されます。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object | find および create のオプション |
|
options.where | object | where 検索属性のハッシュ。 |
|
options.defaults | object |
|
新しいインスタンスを作成する場合に使用するデフォルト値 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
参照
- findおよびオプションの完全な仕様については、Model.findAllを参照してください
public static getTableName(): string | object ソース
スキーマを考慮したモデルのテーブル名を取得します。モデルにスキーマがない場合は、名前が文字列として返されます。または、tableName
、schema
、および delimiter
プロパティを持つオブジェクトが返されます。
public static hasMany(target: Model, options: object): HasMany ソース
これ (ソース) と指定されたターゲットの間に 1:多 の関連付けを作成します。外部キーはターゲットに追加されます。
パラメーター
名前 | 型 | 属性 | 説明 |
target | モデル | ターゲット モデル |
|
options | object |
|
hasMany の関連付けオプション |
options.hooks | boolean |
|
カスケードによって関連付けられたモデルが削除されたときに、before-/afterDestroy フックを実行する場合は true に設定します。たとえば、 |
options.as | string | object |
|
このモデルのエイリアス。文字列を指定する場合は、複数形にする必要があり、node.inflection を使用して単数形に変換されます。単数形バージョンを自分で制御する場合は、 |
options.foreignKey | string | object |
|
ターゲットテーブルの外部キーの名前。または、外部列の型定義を表すオブジェクト (構文については |
options.sourceKey | string |
|
ソーステーブルで関連付けのキーとして使用するフィールドの名前。デフォルトは、ソーステーブルの主キーです。 |
options.scope | object |
|
ターゲットでアソシエーションの作成および検索のデフォルトに使用されるキー/値のセット。(N:Mではsqliteはサポートされていません) |
options.onDelete | string |
|
foreignKey が NULL を許可する場合は SET NULL、それ以外の場合は CASCADE |
options.onUpdate | string |
|
|
options.constraints | boolean |
|
外部キーで更新時および削除時の制約を有効にする必要があります。 |
例
User.hasMany(Profile) // This will add userId to the profile table
public static hasOne(target: Model, options: object): HasOne ソース
これ (ソース) と指定されたターゲットの間に関連付けを作成します。外部キーはターゲットに追加されます。
パラメーター
名前 | 型 | 属性 | 説明 |
target | モデル | ターゲット モデル |
|
options | object |
|
hasOne の関連付けオプション |
options.hooks | boolean |
|
カスケードによって関連付けられたモデルが削除されたときに、before-/afterDestroy フックを実行する場合は true に設定します。たとえば、 |
options.as | string |
|
このモデルのエイリアス (単数形)。 |
options.foreignKey | string | object |
|
ターゲットモデルの外部キー属性の名前。または、外部列の型定義を表すオブジェクト (構文については |
options.sourceKey | string |
|
ソーステーブルで関連付けのキーとして使用する属性の名前。デフォルトは、ソーステーブルの主キーです。 |
options.onDelete | string |
|
foreignKey が NULL を許可する場合は SET NULL、それ以外の場合は CASCADE |
options.onUpdate | string |
|
'ON UPDATE' を設定します |
options.constraints | boolean |
|
外部キーで更新時および削除時の制約を有効にする必要があります。 |
options.uniqueKey | string |
|
一意制約のカスタム名。 |
例
User.hasOne(Profile) // This will add userId to the profile table
public static async increment(fields: string | Array | object, options: object): Promise<Model[], ?number> ソース
1 つ以上の列の値を増分します。これはデータベースで行われるため、インスタンスに現在保存されている値は使用されません。増分は、SET column = column + X WHERE foo = 'bar'
クエリを使用して行われます。インスタンスへの増分後の正しい値を取得するには、リロードを行う必要があります。
パラメーター
名前 | 型 | 属性 | 説明 |
fields | string | Array | object | 文字列が指定されている場合、その列はオプションで指定された |
|
options | object | 増分オプション |
|
options.where | object | 条件ハッシュ |
|
options.by | number |
|
増分する数 |
options.silent | boolean |
|
trueの場合、updatedAtタイムスタンプは更新されません。 |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
戻り値
Promise<Model[], ?number> | 影響を受ける行の配列と、 |
例
Model.increment('number', { where: { foo: 'bar' });
Model.increment(['number', 'count'], { by: 2, where: { foo: 'bar' } });
// `by` is ignored, as each column has its own value
Model.increment({ answer: 42, tries: -1}, { by: 2, where: { foo: 'bar' } });
public static init(attributes: object, options: object): Model ソース
DB内のテーブルを表すモデルを、属性とオプションで初期化します。
テーブルの列は、最初の引数として指定されたハッシュによって定義されます。ハッシュの各属性は、列を表します。
パラメーター
名前 | 型 | 属性 | 説明 |
属性 | object | 各属性がテーブルの列であるオブジェクト。各列は、DataType、文字列、または型記述オブジェクトのいずれかであり、以下に説明するプロパティを持ちます。 |
|
attributes.column | string | DataTypes | object | データベース列の記述 |
|
attributes.column.type | string | DataTypes | 文字列またはデータ型 |
|
attributes.column.allowNull | boolean |
|
false の場合、列には NOT NULL 制約があり、インスタンスが保存される前に null ではない検証が実行されます。 |
attributes.column.defaultValue | any |
|
リテラル デフォルト値、JavaScript 関数、または SQL 関数 ( |
attributes.column.unique | string | boolean |
|
true の場合、列には一意制約が適用されます。文字列が指定された場合、列は複合一意インデックスの一部になります。複数の列に同じ文字列がある場合は、同じ一意インデックスの一部になります。 |
attributes.column.primaryKey | boolean |
|
true の場合、この属性は主キーとしてマークされます |
attributes.column.field | string |
|
設定されている場合、sequelize は属性名をデータベース内の別の名前にマップします |
attributes.column.autoIncrement | boolean |
|
true の場合、この列は自動インクリメントに設定されます |
attributes.column.autoIncrementIdentity | boolean |
|
true の場合、autoIncrement=true と組み合わせると、Postgres の |
attributes.column.comment | string |
|
この列のコメント |
attributes.column.references | string | Model |
|
参照構成を持つオブジェクト |
attributes.column.references.model | string | Model |
|
この列が別のテーブルを参照する場合は、モデルまたは文字列としてここに指定します |
attributes.column.references.key | string |
|
この列が参照する外部テーブルの列 |
attributes.column.onUpdate | string |
|
参照キーが更新された場合に何が起こるべきか。CASCADE、RESTRICT、SET DEFAULT、SET NULL、または NO ACTION のいずれか。 |
attributes.column.onDelete | string |
|
参照キーが削除された場合に何が起こるべきか。CASCADE、RESTRICT、SET DEFAULT、SET NULL、または NO ACTION のいずれか。 |
attributes.column.get | Function |
|
この列のカスタム getter を指定します。基になる値を操作するには、 |
attributes.column.set | Function |
|
この列のカスタム setter を指定します。基になる値を操作するには、 |
attributes.column.validate | object |
|
モデルが保存されるたびにこのカラムに対して実行される検証のオブジェクトです。validator.jsによって提供される検証の名前、validator.jsを拡張して提供される検証関数(詳細は |
options | object | これらのオプションは、Sequelizeコンストラクターに提供されるデフォルトの定義オプションとマージされます。 |
|
options.sequelize | object | 新しいモデルをアタッチするSequelizeインスタンスを定義します。提供されない場合はエラーをスローします。 |
|
options.modelName | string |
|
モデルの名前を設定します。デフォルトでは、クラス名と同じです。 |
options.defaultScope | object |
|
このモデルに使用するデフォルトの検索スコープを定義します。スコープは、find / findAllに渡されるオプションと同じ形式です。 |
options.scopes | object |
|
上記のdefaultScopeと同じ方法で定義された、より多くのスコープ。スコープがどのように定義され、それらを使用して何ができるかについての詳細は、 |
options.omitNull | boolean |
|
null値を永続化しません。つまり、null値を持つすべてのカラムは保存されません。 |
options.timestamps | boolean |
|
createdAtおよびupdatedAtタイムスタンプをモデルに追加します。 |
options.paranoid | boolean |
|
これがtrueの場合、 |
options.underscored | boolean |
|
すべての属性にアンダースコア付きのフィールドを追加します。これには、ユーザー定義の属性、タイムスタンプ、および外部キーが含まれます。明示的に設定された |
options.freezeTableName | boolean |
|
freezeTableNameがtrueの場合、sequelizeはモデル名を変更してテーブル名を取得しようとしません。それ以外の場合、モデル名は複数形になります。 |
options.name | object |
|
このモデルが他のモデルに関連付けられている場合に使用される、 |
options.name.singular | string |
|
モデルの単数形名 |
options.name.plural | string |
|
モデルの複数形名 |
options.indexes | 配列<オブジェクト> |
|
インデックス定義 |
options.indexes[].name | string |
|
インデックスの名前。デフォルトは、モデル名 + _ + フィールドを連結したもの。 |
options.indexes[].type | string |
|
インデックスタイプ。mysqlでのみ使用されます。 |
options.indexes[].using | string |
|
インデックスを作成する方法(SQLの |
options.indexes[].operator | string |
|
インデックス演算子を指定します。 |
options.indexes[].unique | boolean |
|
インデックスは一意である必要がありますか?typeを |
options.indexes[].concurrently | boolean |
|
PostgresSQLは、書き込みロックをせずにインデックスを構築します。Postgresのみ。 |
options.indexes[].fields | 配列<文字列|オブジェクト> |
|
インデックスを作成するフィールドの配列。各フィールドは、フィールドの名前を含む文字列、sequelizeオブジェクト(例: |
options.createdAt | string | boolean |
|
文字列が指定された場合はcreatedAt属性の名前を上書きするか、falseの場合は無効にします。タイムスタンプはtrueである必要があります。アンダースコア付きフィールドは、アンダースコア設定で設定されます。 |
options.updatedAt | string | boolean |
|
文字列が指定された場合はupdatedAt属性の名前を上書きするか、falseの場合は無効にします。タイムスタンプはtrueである必要があります。アンダースコア付きフィールドは、アンダースコア設定で設定されます。 |
options.deletedAt | string | boolean |
|
文字列が指定された場合はdeletedAt属性の名前を上書きするか、falseの場合は無効にします。タイムスタンプはtrueである必要があります。アンダースコア付きフィールドは、アンダースコア設定で設定されます。 |
options.tableName | string |
|
freezeTableNameがtrueの場合を除き、デフォルトは複数形にされたモデル名です。その場合は、モデル名をそのまま使用します。 |
options.schema | string |
|
schema |
options.engine | string |
|
モデルのテーブルのエンジンを指定します |
options.charset | string |
|
モデルのテーブルの文字セットを指定します |
options.comment | string |
|
モデルのテーブルのコメントを指定します |
options.collate | string |
|
モデルのテーブルの照合順序を指定します |
options.initialAutoIncrement | string |
|
MySQLのテーブルの初期AUTO_INCREMENT値を設定します。 |
options.hooks | object |
|
特定のライフサイクルイベントの前後に呼び出されるフック関数のオブジェクト。使用可能なフックは、beforeValidate、afterValidate、validationFailed、beforeBulkCreate、beforeBulkDestroy、beforeBulkUpdate、beforeCreate、beforeDestroy、beforeUpdate、afterCreate、beforeSave、afterDestroy、afterUpdate、afterBulkCreate、afterSave、afterBulkDestroy、afterBulkUpdateです。フック関数とそのシグネチャの詳細については、「フック」を参照してください。各プロパティは、関数または関数の配列のいずれかになります。 |
options.validate | object |
|
モデル全体の検証のオブジェクト。検証では、 |
options.whereMergeStrategy | 'and' | 'overwrite' |
|
スコープのマージ戦略を指定します(デフォルトは 'overwrite')。'and' 戦略は、最上位レベルに |
例
Project.init({
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'
// Other attributes here
},
columnB: Sequelize.STRING,
columnC: 'MY VERY OWN COLUMN TYPE'
}, {sequelize})
sequelize.models.modelName // The model will now be available in models under the class name
public static async max(field: 文字列, options: オブジェクト): Promise<*> ソース
フィールドの最大値を検索します。
参照
- オプションについてはModel.aggregateを参照
public static async min(field: 文字列, options: オブジェクト): Promise<*> ソース
フィールドの最小値を検索します。
参照
- オプションについてはModel.aggregateを参照
public static removeAttribute(attribute: 文字列) ソース
モデル定義から属性を削除します。
パラメーター
名前 | 型 | 属性 | 説明 |
attribute | string | 削除する属性の名前 |
public static async restore(options: オブジェクト): Promise ソース
paranoid
が有効な場合、複数のインスタンスを復元します。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object | 復元オプション |
|
options.where | object |
|
復元をフィルターします |
options.hooks | boolean |
|
バルク復元フックの前後に実行しますか? |
options.individualHooks | boolean |
|
trueに設定すると、復元はwhereパラメーター内のすべてのレコードを見つけ、各行でバルク復元フックの前後を実行します |
options.limit | number |
|
非削除にする行数(mysqlのみ) |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
public static schema(schema: 文字列, options: オブジェクト): Model ソース
このモデルにスキーマを適用します。postgresの場合、実際にはスキーマがテーブル名の前に配置されます- "schema"."tableName"
。一方、mysqlとsqliteの場合、スキーマはテーブル名の前に付加されます-'schema.tablename'
。
このメソッドは、複数のスキーマで同じモデルが必要なユースケースで使用することを目的としています。このようなユースケースでは、モデルが正しいスキーマで作成されるように、各モデルに対してmodel.schema(schema, [options]).sync()
を呼び出すことが重要です。
モデルごとに単一のデフォルトスキーマが必要な場合は、モデルのdefine()
呼び出し中にoptions.schema='schema'
パラメーターを設定します。
パラメーター
名前 | 型 | 属性 | 説明 |
schema | string | スキーマの名前 |
|
options | object |
|
スキーマオプション |
options.schemaDelimiter | string |
|
スキーマ名とテーブル名を区切る文字 |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
参照
- デフォルトのスキーマの設定の詳細については、Sequelize#defineを参照してください。
public static scope(option: 配列 | オブジェクト | 文字列): Model ソース
define
で作成されたスコープをモデルに適用します。
例
const Model = sequelize.define('model', attributes, {
defaultScope: {
where: {
username: 'dan'
},
limit: 12
},
scopes: {
isALie: {
where: {
stuff: 'cake'
}
},
complexFunction: function(email, accessLevel) {
return {
where: {
email: {
[Op.like]: email
},
access_level {
[Op.gte]: accessLevel
}
}
}
}
}
})
# As you have defined a default scope, every time you do Model.find, the default scope is appended to your query. Here's a couple of examples:
Model.findAll() // WHERE username = 'dan'
Model.findAll({ where: { age: { [Op.gt]: 12 } } }) // WHERE age > 12 AND username = 'dan'
Model.scope({ method: ['complexFunction', '[email protected]', 42]}).findAll()
// WHERE email like '[email protected]%' AND access_level >= 42
public static async sum(field: string, options: object): Promise<number> source
フィールドの合計を検索します。
参照
- オプションについてはModel.aggregateを参照
public static async sync(options: object): Promise<Model> source
このモデルをDBに同期します。つまり、テーブルを作成します。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
同期オプション |
参照
- オプションについては Sequelize#sync を参照してください。
public static async truncate(options: object): Promise source
モデルのすべてのインスタンスを切り捨てます。これは Model.destroy({ truncate: true }) の便利なメソッドです。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
truncate に加えて Model.destroy に渡されるオプション。 |
options.cascade | boolean | Function |
|
指定されたテーブルへの外部キー参照を持つ、または CASCADE によりグループに追加されたテーブルをすべて切り捨てます。 |
options.restartIdentity | boolean |
|
切り捨てられたテーブルの列が所有するシーケンスを自動的に再開します。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.logging | boolean | Function |
|
SQLクエリをログに記録する関数、またはログを記録しない場合は false。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
参照
- 詳細については Model.destroy を参照してください。
public static async update(values: object, options: object): Promise<Array<number, number>> source
whereオプションに一致する複数のインスタンスを更新します。
パラメーター
名前 | 型 | 属性 | 説明 |
values | object | 更新する値のハッシュ |
|
options | object | 更新オプション |
|
options.where | object | 検索の範囲を記述するオプション。 |
|
options.paranoid | boolean |
|
true の場合、削除されていないレコードのみが更新されます。false の場合、削除されたレコードと削除されていないレコードの両方が更新されます。モデルで |
options.fields | Array |
|
更新するフィールド(デフォルトはすべてのフィールド) |
options.validate | boolean |
|
各行が挿入前に検証される必要があるかどうか。1つの行が検証に失敗した場合、挿入全体が失敗します。 |
options.hooks | boolean |
|
一括更新フックの前後に実行しますか? |
options.sideEffects | boolean |
|
仮想セッターの副作用を更新するかどうか。 |
options.individualHooks | boolean |
|
更新フックの前後に実行しますか? true の場合、SELECT の後に個々の UPDATE が実行されます。フックにロウデータを渡す必要があるため、select が必要です。 |
options.returning | boolean | Array |
|
trueの場合、定義されたすべての値を取得するためにRETURNING <モデル列>を追加します。列名の配列の場合、特定の列を取得するためにRETURNING <列>を追加します(Postgresのみ)。 |
options.limit | number |
|
更新する行数(mysql と mariadb のみ。MSSQL では TOP(n) として実装。sqlite では rowid が存在する場合のみサポートされます) |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.silent | boolean |
|
trueの場合、updatedAtタイムスタンプは更新されません。 |
public static async upsert(values: object, options: object): Promise<Array<Model, boolean|null>> source
単一行を挿入または更新します。主キーまたは一意キーで指定された値に一致する行が見つかった場合は、更新が実行されます。一意のインデックスは、テーブル内だけでなく、sequelize モデルで定義する必要があることに注意してください。そうしないと、sequelize が更新する必要がある行を識別できないため、一意制約違反が発生する可能性があります。
実装の詳細
- MySQL - `ON DUPLICATE KEY UPDATE` で実装されています。
- PostgreSQL - `ON CONFLICT DO UPDATE` で実装されています。更新データに PK フィールドが含まれている場合、PK がデフォルトの競合キーとして選択されます。それ以外の場合は、競合キーの要件を満たすことができる最初の一意制約/インデックスが選択されます。
- SQLite - `ON CONFLICT DO UPDATE` で実装されています。
- MSSQL -
MERGE
およびWHEN (NOT) MATCHED THEN
を使用した単一のクエリとして実装されています。
注意 Postgres/SQLite は、行が作成されたか更新されたかに関係なく、作成に対して null を返します。
パラメーター
名前 | 型 | 属性 | 説明 |
values | object | upsert する値のハッシュ |
|
options | object |
|
upsert オプション |
options.validate | boolean |
|
行が挿入される前に検証を実行します。 |
options.fields | Array |
|
レコードが既に存在する場合に更新するフィールド。デフォルトは、変更されたすべてのフィールドです。指定されたフィールドが提供された |
options.hooks | boolean |
|
upsert フックの前後に実行しますか? |
options.returning | boolean |
|
true の場合、自動生成された値を取得します。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.benchmark | boolean |
|
クエリ実行時間をミリ秒単位でロギング関数 (options.logging) の 2 番目の引数として渡します。 |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
options.conflictFields | Array<string> |
|
クエリのON CONFLICT部分の競合フィールドのオプションのオーバーライド。Postgres >= 9.5およびSQLite >= 3.24.0でのみサポートされています。 |
戻り値
Promise<Array<Model, boolean|null>> | 2 つの要素を持つ配列を返します。最初の要素は新しいレコードであり、2 番目の要素は、作成されたばかりの場合は |
公開コンストラクター
public constructor(values: object, options: object) source
新しいモデルインスタンスを構築します。
パラメーター
名前 | 型 | 属性 | 説明 |
values | object |
|
キーと値のペアのオブジェクト |
options | object |
|
インスタンス構築オプション |
options.raw | boolean |
|
trueに設定すると、値はフィールドと仮想セッターを無視します。 |
options.isNewRecord | boolean |
|
これは新しいレコードですか |
options.include | Array |
|
includeオプションの配列 - プリフェッチ/インクルードされたモデルインスタンスを構築するために使用されます。 |
パブリックメンバ
パブリックメソッド
public changed(key: string, value: any): boolean | Array source
changedが文字列で呼び出されると、dataValues
内のそのキーの値が_previousDataValues
の値と異なるかどうかを示すブール値を返します。
引数なしで changed が呼び出された場合、変更されたキーの配列が返されます。
引数なしで changed が呼び出され、キーが変更されていない場合は、false
が返されます。
ネストされた (JSON など) プロパティのプロパティが手動で編集された場合、この関数は false
を返すことに注意してください。これらの場合は、手動で changed('key', true)
を呼び出す必要があります。完全に新しいオブジェクト (たとえば、ディープクローン) を書き込むと検出されます。
パラメーター
名前 | 型 | 属性 | 説明 |
キー | string |
|
ステータスを確認または変更するキー |
値 | any |
|
設定する値 |
例
```
const mdl = await MyModel.findOne();
mdl.myJsonField.a = 1;
console.log(mdl.changed()) => false
mdl.save(); // this will not save anything
mdl.changed('myJsonField', true);
console.log(mdl.changed()) => ['myJsonField']
mdl.save(); // will save
```
public async decrement(fields: string | Array | object, options: object): Promise source
1 つ以上の列の値を減らします。これはデータベースで行われるため、インスタンスに現在保存されている値は使用しません。減分は
SET column = column - X
クエリを使用して行われます。更新されたインスタンスは、デフォルトで Postgres で返されます。ただし、他のダイアレクトでは、新しい値を取得するためにリロードを行う必要があります。
パラメーター
名前 | 型 | 属性 | 説明 |
fields | string | Array | object | 文字列が指定されている場合、その列はオプションで指定された |
|
options | object |
|
減分オプション |
options.by | number |
|
減分する数 |
options.silent | boolean |
|
trueの場合、updatedAtタイムスタンプは更新されません。 |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
options.returning | boolean |
|
自動生成された値を取得するために RETURNING * を追加します(Postgres のみ) |
例
instance.decrement('number') // decrement number by 1
instance.decrement(['number', 'count'], { by: 2 }) // decrement number and count by 2
// decrement answer by 42, and tries by 1.
// `by` is ignored, since each column has its own value
instance.decrement({ answer: 42, tries: 1}, { by: 2 })
public async destroy(options: object): Promise source
このインスタンスに対応する行を破棄します。paranoid の設定によっては、行は完全に削除されるか、deletedAt タイムスタンプが現在の時刻に設定されます。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
破棄オプション |
options.force | boolean |
|
true に設定すると、paranoid モデルは実際に削除されます |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
public equals(other: Model): boolean source
このインスタンスとother
インスタンスが同じ行を参照しているかどうかを確認します。
パラメーター
名前 | 型 | 属性 | 説明 |
その他 | モデル | 比較対象の他のインスタンス |
public get(key: string, options: object): object | any source
キーが指定されていない場合は、仮想ゲッターも呼び出して、インスタンスのすべての値を返します。
key が指定され、そのキーに対応するフィールドまたは仮想ゲッターが存在する場合、そのゲッターを呼び出します。それ以外の場合は、key の値を返します。
public getDataValue(key: string): any source
基になるデータ値の値を取得します。
パラメーター
名前 | 型 | 属性 | 説明 |
キー | string | インスタンスのデータストアを検索するキー |
戻り値
any |
public async increment(fields: string | Array | object, options: object): Promise<Model> since 4.0.0 source
1つ以上のカラムの値をインクリメントします。これはデータベースで行われるため、インスタンスに現在格納されている値は使用されません。インクリメントは以下を使用して行われます。
SET column = column + X
クエリを使用して行われます。更新されたインスタンスは、デフォルトで Postgres で返されます。ただし、他のダイアレクトでは、新しい値を取得するためにリロードを行う必要があります。
パラメーター
名前 | 型 | 属性 | 説明 |
fields | string | Array | object | 文字列が指定されている場合、その列はオプションで指定された |
|
options | object |
|
options |
options.by | number |
|
増分する数 |
options.silent | boolean |
|
trueの場合、updatedAtタイムスタンプは更新されません。 |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
options.returning | boolean |
|
自動生成された値を取得するために RETURNING * を追加します(Postgres のみ) |
例
instance.increment('number') // increment number by 1
instance.increment(['number', 'count'], { by: 2 }) // increment number and count by 2
// increment answer by 42, and tries by 1.
// `by` is ignored, since each column has its own value
instance.increment({ answer: 42, tries: 1}, { by: 2 })
public isSoftDeleted(): boolean source
インスタンスが「ソフト削除」されているかどうかを判断するためのヘルパーメソッド。これは、実装者が deletedAt
属性を別の名前に変更した場合に特に役立ちます。このメソッドでは、paranoid
が有効になっている必要があります。
public previous(key: string): any | Array<any> source
_previousDataValues
からキーの前の値を返します。
キーなしで呼び出された場合、変更されたすべての値の以前の値を返します
パラメーター
名前 | 型 | 属性 | 説明 |
キー | string |
|
以前の値を取得するキー |
public async reload(options: object): Promise<Model> source
現在のインスタンスをインプレースで更新します。つまり、オブジェクトを DB からの現在のデータで更新し、同じオブジェクトを返します。これは、find(Instance.id)
を実行するのとは異なります。なぜなら、それは新しいインスタンスを作成して返すからです。このメソッドでは、インスタンスへのすべての参照が新しいデータで更新され、新しいオブジェクトは作成されません。
public async restore(options: object): Promise source
このインスタンスに対応する行を復元します。パラノイドモデルでのみ使用可能です。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
復元オプション |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
public async save(options: object): Promise<Model> source
このインスタンスを検証し、検証に合格した場合、データベースに永続化します。
保存されたインスタンスに解決される Promise を返します(または、Sequelize.ValidationError
でリジェクトされます。これには、検証に失敗した各フィールドのプロパティと、そのフィールドのエラーメッセージが含まれます)。
このメソッドは、変更されたフィールドのみを UPDATE するように最適化されています。何も変更されていない場合、SQL クエリは実行されません。
このメソッドは、イーガーロードされた関連付けを認識しません。言い換えれば、別のモデルインスタンス(子)がこのインスタンス(親)でイーガーロードされ、子で何かを変更した場合、save()
を呼び出すと、子で発生した変更は単純に無視されます。
パラメーター
名前 | 型 | 属性 | 説明 |
options | object |
|
save のオプション |
options.fields | string[] |
|
データベース列を表す文字列のオプションの配列。フィールドが指定されている場合、それらの列のみが検証および保存されます。 |
options.silent | boolean |
|
trueの場合、updatedAtタイムスタンプは更新されません。 |
options.validate | boolean |
|
falseの場合、バリデーションは実行されません。 |
options.hooks | boolean |
|
作成/更新の前と後に + バリデーションフックを実行します |
options.logging | Function |
|
SQL をログに記録するために、クエリの実行中に実行される関数。 |
options.transaction | Transaction |
|
クエリを実行するトランザクション |
options.searchPath | string |
|
スキーマsearch_pathを指定するためのオプションのパラメータ(Postgresのみ) |
options.returning | boolean |
|
自動生成された値を取得するために RETURNING * を追加します(Postgres のみ) |
public set(key: string | object, value: any, options: object): Model source
set
は、インスタンスの値を更新するために使用されます(インスタンスの sequelize 表現です。save
を実際に呼び出すまで何も永続化されないことに注意してください)。最も基本的な形式では、set
は基になる dataValues
オブジェクトに格納された値を更新します。ただし、キーに対してカスタムセッター関数が定義されている場合は、代わりにその関数が呼び出されます。セッターをバイパスするには、オプションオブジェクトに raw: true
を渡すことができます。
set
がオブジェクトで呼び出された場合、オブジェクトをループし、キーと値のペアごとに再帰的に set
を呼び出します。raw を true に設定すると、基になる dataValues は、渡されたオブジェクトに直接設定されるか、dataValues にすでに値が含まれている場合は、dataValues を拡張するために使用されます。
set
が呼び出されると、フィールドの以前の値が保存され、変更フラグが設定されます(changed
を参照)。
set
は、関連付けのインスタンスを構築するためにも使用できます。そのような値がある場合です。関連付けで set
を使用する場合は、プロパティキーが関連付けのエイリアスと一致していることを確認し、適切な include オプションが設定されていることを確認する必要があります(.build() または .findOne() から)。
JSON/JSONB 属性のドットで区切られたキーで呼び出すと、値がネストされ、オブジェクト全体が変更されたものとしてフラグが設定されます。
パラメーター
名前 | 型 | 属性 | 説明 |
キー | string | object | 設定するキー。文字列またはオブジェクトにすることができます。文字列の場合、そのキーを設定し、オブジェクトの場合はすべてのオブジェクトプロパティをループしてそれらを設定します。 |
|
値 | any | 設定する値 |
|
options | object |
|
set のオプション |
options.raw | boolean |
|
true に設定すると、フィールドおよび仮想セッターは無視されます |
options.reset | boolean |
|
以前に設定されたすべてのデータ値をクリアします |
参照
- インクルードの詳細については、Model.findAll を参照してください
public setDataValue(key: string, value: any) source
基になるデータ値を更新します
パラメーター
名前 | 型 | 属性 | 説明 |
キー | string | インスタンスのデータストアに設定するキー |
|
値 | any | 指定されたキーの新しい値 |
public toJSON(): object source
インスタンスを JSON 表現に変換します。キーなしで get
を呼び出すことへのプロキシ。これは、DB から取得したすべての値を取得し、すべてのカスタムゲッターを適用することを意味します。
public async update(values: object, options: object): Promise<Model> source
これは set
を呼び出してから save
を呼び出すのと同じですが、渡された正確な値のみを保存するため、よりアトミックで安全です。