- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我无法让 Sequelize.js 软删除我表中的行。我使用 Sequelize cli 完成所有迁移,并且我没有使用同步功能在启动时重新同步数据库。我的迁移和模型中有时间戳字段,甚至有 deletedAt 字段(模型也有偏执狂:也为真),无论它仍然删除行,而不是向 deletedAt 字段添加时间戳。我注意到在进行任何查询时,它不会像我在某些教程中看到的那样在查询中添加 deletedAt = NULL。我正在使用 Sequelize.js v3.29.0。
模型文件:
'use strict';
module.exports = function(sequelize, DataTypes) {
var Collection = sequelize.define('Collection', {
userId: {
type: DataTypes.INTEGER,
allowNull: false,
validate: {
isInt: true
}
},
name: {
type: DataTypes.STRING,
allowNull: false
},
description: DataTypes.TEXT,
createdAt: {
allowNull: false,
type: DataTypes.DATE
},
updatedAt: {
allowNull: false,
type: DataTypes.DATE
},
deletedAt: {
type: DataTypes.DATE
}
}, {
classMethods: {
associate: function(models) {
Collection.belongsTo(models.User, { foreignKey: 'userId' })
}
}
}, {
timestamps: true,
paranoid: true
});
return Collection;
};
迁移文件:
'use strict';
module.exports = {
up: function(queryInterface, Sequelize) {
return queryInterface.createTable('Collections', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
userId: {
allowNull: false,
type: Sequelize.INTEGER
},
name: {
allowNull: false,
type: Sequelize.STRING
},
description: {
type: Sequelize.TEXT
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
},
deletedAt: {
type: Sequelize.DATE
}
});
},
down: function(queryInterface, Sequelize) {
return queryInterface.dropTable('Collections');
}
};
这是我用来销毁集合对象的 Controller 中的代码。
Collection.findOne({
where: {
id: collectionId,
userId: user.id
}
}).then(function(collection){
if (collection !== null) {
collection.destroy().then(function(){
res.redirect('/collection');
}).catch(function(error){
res.redirect('/collection/'+collectionId);
});
}
});
最佳答案
确保 paranoid 是在第二个对象参数中定义的属性。
..., {
classMethods: {
associate: function(models) {
Collection.belongsTo(models.User,{ foreignKey: 'userId' })
}
},
timestamps: true,
paranoid: true
}
您已将 paranoid 定义为 3.Param,这就是问题所在。
关于node.js - 即使 paranoid 设置为 true,Sequelize.js 仍然删除表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43486121/
Sequelize 支持 paranoid tables 的概念。 A paranoid table is one that, when told to delete a record, it wil
我希望我的应用程序中以前存在的用户(已使用偏执模式删除)(因此现在其字段 deletedAt 不是 null)能够使用同一电子邮件再次注册。因此,当 API 注意到使用之前使用过的电子邮件创建用户时,
我实现了一个 netty 4 http 服务器。 public void start() { System.out.println("In Start method"); try {
我正在尝试创建一个数据库并维护一个建立在 sequelize 上的 Restful api 服务。 我想要一个模型,UserGameProfile,它可以根据用户的喜好删除和恢复。 我希望它能够被删除
我有一些模型关联,如下所示: db.runt.hasMany db.runtsBudgets, { foreignKey: 'runt_id' } db.runt.hasMany db.runtsPr
我正在使用 ActAsParanoid gem 来软删除一些记录,比如说 child 。 parent 并不偏执,我希望在摧毁 parent 时, children 真的被摧毁了。 class Par
我无法让 Sequelize.js 软删除我表中的行。我使用 Sequelize cli 完成所有迁移,并且我没有使用同步功能在启动时重新同步数据库。我的迁移和模型中有时间戳字段,甚至有 delete
问题描述 我创建了 2 个表, user 和 role 。 user 中的字段之一是 roleId ,它指向 role 表。 两个表 paranoid 都等于 true 。 如果 role.id 2
我是一名优秀的程序员,十分优秀!