我有一个带表的SQL Server数据库,当添加记录时,该表会在每行中自动插入一个GUID。此列是该表的主键,从不需要自动为其提供任何值。
问题在于,每次我执行.create({emailAddress:“ test@test.com”})调用时,Sequelize都会为此列发送NULL,这会导致数据库错误(因为不允许使用null) ,显然)。
我尝试在顶级和“调用”级添加omitNull,但它们都不起作用,除非我删除主键,然后它不发送NULL。因此,似乎Sequelize认为如果某个内容是主键,那么它必须发送一个值,而不是理解SQL SERVER数据库将处理该值的插入。
有人知道解决方法吗?
//型号
module.exports = function (sequelize, DataTypes) {
const Player = sequelize.define('Player', {
playerId: {
primaryKey: true,
type: DataTypes.STRING
},
emailAddress: {
type: DataTypes.STRING
}
}, {
timestamps: false
});
return Player;
};
//创建一行
let newPlayer = {
emailAddress:'test@test.com'
}
Player.create(newPlayer, {omitNull:true}).then(function(player){
console.log("player", player)
}).catch(function(error){
console.log("error", error)
})
答案 0 :(得分:2)
添加defaultValue
和allowNull
应该可以完成工作
playerId: {
primaryKey: true,
defaultValue: '',
allowNull: false,
}