node.js - 即使传递数据具有不存在的字段/列,Sequelize 也会创建行

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

我正在为我的模型创建一个测试,现在我的场景是我想插入一个表,其中的列/字段未在我的 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 未在模型定义中定义。

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

Sequelize 版本:5.21.3

Node 版本:10.14.2

最佳答案

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

关于node.js - 即使传递数据具有不存在的字段/列,Sequelize 也会创建行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60134964/

相关文章:

javascript - 使用loopback.io创建一个新项目

javascript - 在 MongoDB 中使用原生 ES6 Promise

sequelize.js - 序列化查询 - 如果一项与查询匹配,则返回所有项

mysql - 尝试使用 mysql2 gem 安装应用程序时出错

nginx - 在node.js前面使用nginx

typescript - Sequelize 计数返回值不可分配给类型 'number'

mysql - 如何获取今天的 sequelize js 记录

mysql - 迁移错误 - 错误 : You have an error in your SQL syntax; check the manual that corresponds

mysql - Rails 3.1.0 和 Resque—— "Mysql2::Error: MySQL server has gone away"

node.js - 使用nodejs和express将数据保存到mongodb数据库问题