.archive()
封存(「軟刪除」)符合指定條件的記錄,將它們另存為內建 Archive 模型中的新記錄,然後銷毀原始記錄。
await Something.archive(criteria);
參數 | 類型 | 詳細資訊 | |
---|---|---|---|
1 | criteria | 符合此 Waterline criteria 的記錄將被封存。 請注意,如果您將空字典 ({} ) 指定為 criteria,所有記錄都將被銷毀! |
參數 | 類型 | 詳細資訊 | |
---|---|---|---|
1 | err | 發生的錯誤,如果沒有錯誤則為 null 。 |
|
2 | archivedRecords | 為了提高效能,預設情況下不會將封存的記錄提供給此 callback。 但是,如果您鏈式調用 .fetch() ,則最近封存的記錄將會被傳回。(請注意,這在某些适配器中需要額外的資料庫查詢。) |
要封存資料庫中的特定使用者,請使用 .archiveOne()
。
或封存資料庫中的多個記錄
await Pet.archive({ lastActiveAt: { '<': Date.now()-1000*60*60*24*365 } });
如果您將來需要存取封存的記錄,可以透過搜尋 Archive 模型來完成。 例如,您可以在查詢中傳入原始記錄的主鍵和 模型識別 作為約束條件。
例如,要檢索描述我們上面刪除的使用者的封存
var archive = await Archive.findOne({
fromModel: 'user',
originalRecordId: 1
});
// The data from the original record is stored as `archive.originalRecord`.
此方法最適用於您原本會使用
.destroy()
的情況,但您仍然需要將刪除的資料保留在某處(例如,為了符合法規原因)。 如果您預期需要在您的應用程式中再次存取資料(例如,如果您允許取消刪除),您可能需要考慮改用isDeleted
標誌,因為封存的記錄在程式設計上更難以使用。(沒有內建的「取消封存」功能。)