2016-03-23 30 views
2

İşte bir tarif tablosu için benim modelim. Ben veritabanı ve mysql modülü olarak kullanıyorum. Başlığı, prep_time veya cook_time boş formda bırakılırsa, allowNull ve defaultValue öğesinin geçerliliğini atlayıp veritabanına bir '' (boş dize) girmeye çalışır gibi görünüyor. Yanlış yaptığım bir şey mi var?Sequelize defaultValue ayarlanmadı

module.exports = function(sequelize, DataTypes) { 
    return sequelize.define('recipe', { 
     title: { 
      type: DataTypes.STRING, 
      allowNull: false 
     }, 
     description: { 
      type: DataTypes.TEXT 
     }, 
     ingredients: { 
      type: DataTypes.TEXT 
     }, 
     instructions: { 
      type: DataTypes.TEXT 
     }, 
     yield: { 
      type: DataTypes.STRING 
     }, 
     prep_time: { 
      type: DataTypes.INTEGER, 
      allowNull: false, 
      defaultValue: '0' 
     }, 
     cook_time: { 
      type: DataTypes.INTEGER, 
      allowNull: false, 
      defaultValue: '0' 
     }, 
     image: { 
      type: DataTypes.STRING 
     } 
    }); 
}; 

cevap

3

İki durumda olabilir. Önce modeli tanımladıktan sonra defaultValue ve allowNull entererd varsa, tabloyu sync({force:true) ile yeniden senkronize etmeniz gerekir. title gibi nitelikler ve prep_time create() sağlanan değilse

İkincisi, AllowNull ve defaultVaue çalışacaktır. örneğin create({title:'',prep_time:''}) boş değerleri dolduracaktır. ancak create({title:''} yaparsanız prep_time değerini defaultValue olarak ayarlayın. title özniteliğinin benzer şekilde atlanması, doğrulama hatasına neden olacaktır.

Ancak, create(req.body) yapıyorsanız ve gövdede title ve prep_time alanları var. daha sonra boş değerler girilecektir.

Kendimi açıkça ifade ettim :)

+0

Tam olarak ne oldu. Şimdi sadece teslim edilmeden önce bu anahtarları cisimden çekmem gerekiyor. Teşekkür ederim. –