.archive()
指定された条件に一致するレコードを「ソフトデリート」としてアーカイブし、組み込みのArchiveモデルに新しいレコードとして保存してから、元のレコードを破棄します。
await Something.archive(criteria);
引数 | 型 | 詳細 | |
---|---|---|---|
1 | criteria | このWaterlineの条件に一致するレコードがアーカイブされます。空の辞書({} )を条件として指定すると、すべてのレコードが破棄されるので注意してください! |
引数 | 型 | 詳細 | |
---|---|---|---|
1 | err | 発生したエラー。エラーがない場合はnull 。 |
|
2 | archivedRecords | パフォーマンス向上のため、アーカイブされたレコードはデフォルトではこのコールバックに提供されません。ただし、.fetch() をチェーンすると、最近アーカイブされたレコードが返送されます。(一部のアダプタでは、これにより追加のデータベースクエリが必要になることに注意してください。) |
データベース内の特定のユーザーをアーカイブするには、.archiveOne()
を使用します。
または、データベース内の複数のレコードをアーカイブするには
await Pet.archive({ lastActiveAt: { '<': Date.now()-1000*60*60*24*365 } });
将来アーカイブされたレコードにアクセスする必要がある場合は、Archiveモデルを検索することでアクセスできます。たとえば、元のレコードの主キーとモデルIDをクエリの制約として渡すことができます。
たとえば、上記で削除したユーザーを記述するアーカイブを取得するには
var archive = await Archive.findOne({
fromModel: 'user',
originalRecordId: 1
});
// The data from the original record is stored as `archive.originalRecord`.
このメソッドは、
.destroy()
を使用する場合でも、削除されたデータをどこかに保持する必要がある状況(コンプライアンス上の理由など)で最適に使用されます。アプリで再びデータにアクセスする必要がある場合(たとえば、削除の取り消しを許可する場合)、アーカイブされたレコードはプログラムで扱うのがより難しいため、代わりにisDeleted
フラグを使用することを検討してください。(組み込みの「アーカイブ解除」はありません。)