.archiveOne()
指定された条件に一致するレコードをアーカイブ化(ソフト削除)し、そのレコードをビルトインの Archive モデルの新規レコード(存在する場合)として保存してから、元のレコードを削除します。
var originalRecord = await Something.archiveOne(criteria);
Waterline はデータベースの変更を試みる前に、指定された条件が複数のレコードに一致するかどうかを確認し、一致する場合は処理を続行せずにエラーをスローします。
パラメーター | タイプ | 詳細 | |
---|---|---|---|
1 | criteria | データベース内のレコードとの照合に使用するWaterline criteria。 |
タイプ | 説明 |
---|---|
このメソッドは一度に 1 レコードしかアーカイブしないため、レコードがアーカイブされる場合は、常に結果として提供されます。それ以外の場合は、undefined が返されます。 |
Sails と Waterline のエラー処理の例については、概念 > モデルと ORM > エラー を参照してください。
var finn = await User.archiveOne({ firstName: 'Finn' });
if (finn) {
sails.log('Archived the user named "Finn".');
} else {
sails.log('The database does not have a user named "Finn".');
}
このメソッドは、
.destroyOne()
を使用するような状況、ただし、削除されたデータを別の場所に保管する必要がある(コンプライアンス上の理由など)で最適に使用できます。アプリで再びデータにアクセスする必要があると予想される場合は(たとえば、削除の取り消しが許可されている場合)、アーカイブされたレコードはプログラムによって操作するのがより困難になるため、代わりにisDeleted
フラグを使用することを検討してもよいでしょう。(ビルトインの「アーカイブ解除」はありません。)
- このメソッドは .fetch() をサポートしません。これは常にアーカイブされたレコードを 1 つ返却するからです。