.archiveOne()
封存 (「軟刪除」) 符合指定條件的記錄,若記錄存在,則將其儲存為內建封存模型中的新記錄,然後銷毀原始記錄。
var originalRecord = await Something.archiveOne(criteria);
在嘗試修改資料庫之前,Waterline 會先檢查給定的條件是否會符合多個記錄,如果是,則會拋出錯誤而不是繼續執行。
參數 | 類型 | 詳細資訊 | |
---|---|---|---|
1 | criteria | 用於比對資料庫中記錄的 Waterline 條件。 |
類型 | 描述 |
---|---|
由於此方法永遠不會封存超過一筆記錄,因此如果記錄被封存,則始終會作為結果提供。否則,此方法會傳回 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(),因為它總是傳回封存的記錄 (如果找到符合的記錄)。