.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 模型来实现。例如,你可能会将原始记录的主键和 模型标识 作为查询中的约束。
例如,要检索描述我们上面删除的用户的存档
var archive = await Archive.findOne({
fromModel: 'user',
originalRecordId: 1
});
// The data from the original record is stored as `archive.originalRecord`.
此方法最适合用于你原本会使用
.destroy()
的情况,但你仍然需要将删除的数据保存在某个地方(例如,出于合规性原因)。如果你预计需要在你的应用程序中再次访问数据(例如,如果你允许撤消删除),你可能需要考虑使用isDeleted
标志,因为存档记录在编程方面更难处理。(没有内置的“取消存档”。)