gpt4 book ai didi

node.js - Sequelize : Hard delete and Insert in a table

转载 作者:行者123 更新时间:2023-12-03 22:32:44 24 4
gpt4 key购买 nike

我需要 删除并将相同的数据插入表
但目前,在删除过程后,数据似乎仍在数据库中。我认为这只是一个软删除。我无法将相同的数据插入数据库,因为有些项目应该是唯一的,并且不会从数据库中删除。
deleteResults 函数之后,我假设这些项目现在被删除到数据库中,但是当调用 insertQuestions 时,它​​遇到一个错误,即某些数据与数据库中的数据相同。
我的模型没有设置为 paranoid 所以我不能使用 force 属性。
如何在 hard-deleteSequelize
下面是删除和插入实现 的代码:

const res = await <<Model>>.destroy({
where: {
id: id
},
transaction: transaction
})
// This contains the destroy calls
const deleteResults = await deleteQuestions(questionnaireResult.id, questionnaireResult.qneQuestions, transaction);

//Insert to DB
const insertQuestionsResult = await insertQuestions(questionnaireResult.id, null, qsReponseObj.questions, answerTypes, languages, sortValuesQuestion, transaction);
请注意,它们使用相同的事务。

最佳答案

您正在使用 transaction 来执行这两个操作,但似乎没有调用 commit() 函数。在运行我的代码之前,我在本地做了一个简单的测试,users 表中的数据:
enter image description here
运行下面的代码后,删除 id 值为 2 的记录并插入 id 为 2 但新用户名的新记录:

class Users extends Model {}
Users.init({
name: DataTypes.STRING
}, { sequelize, modelName: 'users' });

(async () => {
const t = await sequelize.transaction();
await Users.destroy({
where: {
id: 2
},transaction: t
});

await Users.create({
id:2,
name:"a new user name"
},{transaction:t})

await t.commit();

})().then(()=>{sequelize.close()})
.catch(error =>{console.log(error)})
结果:
enter image description here

关于node.js - Sequelize : Hard delete and Insert in a table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65388550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com