2016-03-23 2 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

Это может произойти в двух случаях. Сначала, если у вас есть entererd defaultValue и allowNull позже, после определения модели, вам необходимо выполнить повторную синхронизацию таблицы с помощью sync({force:true).

Во-вторых, AllowNull и defaultVaue будет работать, если атрибуты, такие как title и prep_time не предоставляются create(). например, create({title:'',prep_time:''}) заполнит пустые значения. но если вы делаете create({title:''}, тогда значение prep_time будет установлено defaultValue. Символическое пропущение атрибута title приведет к ошибке проверки.

Но если вы делаете create(req.body) и имеет поля title и prep_time. то будут введены пустые значения.

Надеюсь, я сделал себя ясно :)

+0

Это точно, что было. Теперь мне просто нужно вытащить эти ключи из объекта до его отправки. Спасибо. –

Смежные вопросы