在 Sequelize.js 中,我有查询在某些条件下查找所有项目。在获得模型实例数组后,我想删除这些实例:
let toBeDeleted = await Request.findAll({
where: {
// Some where statements...
}
});
const deleted = await toBeDeleted.destroyAll(); // <= Need something like this
// Some actions with array `toBeDeleted` (For example, Delete file associated with each row)
for (let i in toBeDeleted)
await fs.removeSync(path.join(global.config.paths.screenshots, toBeDeleted[i].image));
我需要先删除我发现的内容,然后删除与行相关联的文件。
最佳答案
更新
使用 where 一次,然后使用 findAll 数据销毁。用原始答案的删除部分替换下面的代码。
await Request.transaction(async function (t) {
for ( var i = 0; i < toBeDeleted.length; i++){
await toBeDeleted[i].destroy({ transaction: t });
}
});
像这样 ?
let toBeDeleted = await Request.findAll({
where: {
// Some where statements...
}
});
const deleted = await Request.destroy({
where: {
// the same statements you used to find toBeDeleted
}
});
请记住,如果您有 paranoid: true ,那么记录将不会被删除并且只有 被删除在 列将有一个时间字符串,如果您想强制删除您需要使用的记录 force:true
关于sql - Sequelize.js - 在 'findAll' 之后删除实例数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57394186/