【发布时间】:2019-05-08 19:10:31
【问题描述】:
我正在使用续集 ORM。我有一个表模型,我们通过paranoid: true 启用了软删除。
问题:有没有办法进行 upsert,如果对象已经存在于表中但被软删除,它只会清除 deletedAt 列?
示例设置: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'
})
})()
【问题讨论】:
标签: sequelize.js upsert soft-delete