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