我正在使用续集ORM。我有一个表格模型,其中通过paranoid: true
启用了软删除。
问题:是否有一种方法可以进行升级,如果对象已经存在于表中但被软删除,那么它将清除deleteAt列?
示例设置:model.js
const Sequelize = require('sequelize')
const sequelize = new Sequelize(
dbName,
username,
password,
{
host,
dialect: 'mysql',
port
}
)
const model = sequelize.define(
'sample_table',
{
uid: {
type: Sequelize.STRING(60),
allowNull: false
primaryKey: true
},
deletedAt: {
type: Sequelize.Date,
allowNull: true,
default: null
}
},
{
tableName: 'sample_table'
deletedAt: true,
paranoid: true
}
)
样品用量:
const model = require('./model.js')
(async () => {
const myModel = await model.create({
uid: 'sample-uid'
})
await myModel.destroy()
// error is encountered because uid already exists
await model.create({
uid: 'sample-uid'
})
})()
答案 0 :(得分:0)
是的,但是您应该手动进行操作(例如,添加一个catch来创建方法,并使用.restore()
来清除DeletedAt列)。
或者您可以在uid + DeletedAt上添加一个主键,您的代码应该可以正常工作。
const model = require('./model.js')
(async () => {
const myModel = await model.create({
uid: 'sample-uid'
})
await myModel.destroy()
// if primary key uid and deletedAt then no error here
await model.create({
uid: 'sample-uid'
})
})()