.archiveOne()
存档(“软删除”)与指定条件匹配的记录,将其(如果存在)作为新记录保存到内置的 Archive 模型中,然后销毁原始记录。
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(),因为它始终返回存档的记录(如果匹配了一个)。