2016-04-03 511 views
0

我有一个模型的行程Sequelize是允许用户键入“空”甚至允许为空:假

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

这适用于防止空的输入,但如果我输入“空”它仍然增加了我数据库。阅读文档,它看起来应该防止这种情况发生?难道我做错了什么?

+0

你是否直接设置title =“null”(即值为null的字符串)? – scottjustin5000

+0

是的。或者我不正确地理解文档? – paulducsantos

回答

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') 
     } 
    } 
    } 
})