即使使用allowNull:false,Sequelize也允许用户输入“null”

时间:2016-04-03 03:39:06

标签: sequelize.js

我有一个行程模型

var Itinerary = sequelize.define('Itinerary', {
  title: {
    type: DataTypes.STRING,
    allowNull: false,
    validate: {
      notEmpty: true
    }
  }
})

这适用于防止空输入,但如果我输入“null”,它仍会添加到我的数据库中。阅读文档,它看起来应该防止这种情况发生?我做错了吗?

1 个答案:

答案 0 :(得分:1)

Sequelize(和db)将“null”解释为有效字符串。

itinerary.title ='null'; 

不同于:

itinerary.title = null;

如果您愿意,可以在模型中添加额外的验证方法,以查找此字符串为空。

var Itinerary = sequelize.define('Itinerary', {
  title: {
    type: DataTypes.STRING,
    allowNull: false,
    nullorEmpty: function() {
      if (!this.title || (this.title === 'null') {
        throw new Error('title must be set')
      }
    }
  }
})