【问题标题】:Sequelize create row even if the pass data has non existing field/column即使传递数据具有不存在的字段/列,Sequelize 创建行
【发布时间】:2020-05-24 20:38:44
【问题描述】:

我正在为我的模型创建一个测试,现在我的场景是我想插入一个表,其中的列/字段未在我的 Sequelize 架构中定义。

这是我的架构示例

class ResploginSchema extends Sequelize.Model { }
ResploginSchema.init(
    {
        resploginID: {
            type: Sequelize.BIGINT(20).UNSIGNED,
            autoIncrement: true,
            primaryKey: true,
            allowNull: false
        },
        clientID: {
            type: Sequelize.INTEGER(10).UNSIGNED,
            allowNull: false,
            validate: {
                isNumeric: true
            }
        },
        tablelimitID: {
            type: Sequelize.TINYINT(2).UNSIGNED,
            allowNull: false
        },
        errMsgID: {
            type: Sequelize.INTEGER(6).UNSIGNED,
            allowNull: false
        }
    },
    {
        sequelize: dbConnection,
        modelName: "resplogin",
        freezeTableName: true,
        timestamps: false
    }
);

这是我要插入的示例数据

let data = {
            clientID: 1,
            sessionID: "not defined field",
            tablelimitID: 1,
            errMsgID: 0
        };


ResploginSchema.create(data)

我原以为它应该返回一个错误,说明 sessionID 未在模型定义中定义。

也许我错过了模型上的一些配置。提前致谢

续集版本:5.21.3

节点版本:10.14.2

【问题讨论】:

    标签: node.js sequelize.js mysql2 node-mysql2


    【解决方案1】:

    这是预期的行为。 Sequelize 只会尝试在它不关心的模式中查找是否有其他字段的字段。事实上,在很多情况下,您可能需要未存储在数据库中的虚拟字段,但您可以在业务逻辑中使用。

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 2010-12-12
      • 2021-12-08
      • 2020-12-07
      • 2023-02-23
      • 1970-01-01
      • 2021-08-23
      • 2019-11-30
      • 1970-01-01
      相关资源
      最近更新 更多