mysql - Sequelize & mysql:自动添加子句`[tableName].deleted_at IS NULL`
问题描述
在 React/Node 应用程序中使用 mysql + sequelize;
自动添加下面的 where 子句,这搞砸了我的其他 where 子句语句
[tableName].deleted_at 为空
在 nodeJS 控制台中,我可以看到都有这个 where 子句的查询......
尝试重新创建索引,删除此列会引发该字段不可用的错误;
列定义为:
`deleted_at` DATETIME NULL DEFAULT NULL,
解决方案
Sequelize 模型为您提供了一个名为paranoid
. 简而言之,它为您提供了该表中每一行的已删除状态,并且在使用 ORM 方法在此模型上处理数据库时,该标志将包含在每个查询中。因此,当您将 paranoid 选项设置为 true 时,deletedAt 列将添加为日期和时间,默认为 null。
MyModel.init({ /* attributes here */ }, {
sequelize,
paranoid: true,
// If you want to give a custom name to the deletedAt column
deletedAt: 'destroyTime'
});
如果您实际检查原始查询,您会发现WHERE deletedAt IS NULL
所有查询都添加到 WHERE 语句中。
您可以在此处从官方 Sequelize 文档中找到更多信息: https ://sequelize.org/master/manual/paranoid.html
推荐阅读
- sftp - 从 SFTP 文件夹复制和删除文件
- javascript - 如何用“onerror”捕获“ReferenceError”
- powershell - 嵌套 If 语句 first -notlike 条件
- c++ - 检测输入字符串是否有空格
- excel - Excel VBA 438 错误在 PC 上引发,但在 Mac 上没有
- magento2 - 缺少css文件的没有背景的按钮
- transparency - 有没有办法用 Allegro 创建一个半透明的窗口?
- c# - 如何删除 DataGrid 中的选定列?(C#/WPF)
- javascript - 如何检查多个数组上的键值对并使用 javascript 进行过滤?
- algorithm - 前 N 个允许分布式数据的重复算法