2016-03-23 4 views
2

これは私のレシピテーブルのモデルです。私はデータベースとしてmysqlを使用しており、sequelizeモジュールも使用しています。フォームのタイトル、prep_time、またはcook_timeを空白のままにしておくと、allowNullとdefaultValueの検証をスキップして、データベースに ''(空文字列)を入力しようとします。私が間違っていることはありますか?Sequelize defaultValueが設定されていません

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

答えて

3

2つの場合があります。最初にモデルを定義した後にdefaultValueallowNullを入力した場合は、テーブルをsync({force:true)で再同期する必要があります。

title、およびprep_timeなどの属性がcreate()に指定されていない場合は、AllowNulldefaultVaueが動作します。たとえば、create({title:'',prep_time:''})は空の値を入力します。 create({title:''}の場合、prep_timeの値はdefaultValueに設定してください。 title属性をスキップすると、検証エラーが発生します。

しかし、create(req.body)を実行していて、本文にはフィールドtitleprep_timeがあります。空の値が入力されます。

希望:私は自分自身を明確にしました:)

+0

これはまさにそうでした。今は、オブジェクトを送信する前にそれらのキーをオブジェクトから引き出すだけです。ありがとうございました。 –

関連する問題