omitNull在Sequelize中的primaryKey列上不起作用

时间:2018-09-05 11:47:52

标签: sql-server node.js sequelize.js

我有一个带表的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)
})

1 个答案:

答案 0 :(得分:2)

添加defaultValueallowNull应该可以完成工作

playerId: {
  primaryKey: true,
  defaultValue: '',
  allowNull: false,
}