【问题标题】:Sequelize & mysql: clause `[tableName].deleted_at IS NULL` getting added automaticallySequelize 和 mysql:自动添加子句 `[table_Name].deleted_at IS NULL`
【发布时间】:2021-03-29 09:41:22
【问题描述】:

在 React/Node 应用程序中使用 mysql + sequelize;

自动添加下面的 where 子句,这搞砸了我的其他 where 子句语句

[tableName].deleted_at IS NULL

在 nodeJS 控制台中,我可以看到都有这个 where 子句的查询...

尝试重新创建索引,删除该列会抛出该字段不可用的错误;

列定义为:

`deleted_at` DATETIME NULL DEFAULT NULL,

【问题讨论】:

    标签: mysql sql node.js sequelize.js


    【解决方案1】:

    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 语句 WHERE deletedAt IS NULL

    您可以在此处从官方 Sequelize 文档中找到更多信息: https://sequelize.org/master/manual/paranoid.html

    【讨论】:

      猜你喜欢
      • 2022-12-17
      • 2022-11-21
      • 2016-10-07
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多