[解決済み] SequelizeのdefaultValueが設定されない
2022-03-04 18:55:28
質問
ここにレシピテーブルの私のモデルがあります。 データベースとしてmysqlを使用し、sequelizeモジュールを使用しています。 もし、title, prep_time, cook_time を空白にすると、allowNull と 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
}
});
};
解決方法は?
この現象は2つのケースで起こります。1つ目は
defaultValue
と
allowNull
でテーブルを再同期する必要があります。
sync({force: true)
.
2つ目
AllowNull
と
defaultValue
のような属性があれば動作します。
title
に、prep_time は提供されません。
create()
例えば
create({title:'',prep_time:''})
は空の値を埋めますが、もし
create({title:''}
の値は
prep_time
が設定されます。
defaultValue
. 同様に
title
属性は、バリデーションエラーの原因となります。
しかし、もしあなたが
create(req.body)
で、ボディにはフィールド
title
と
prep_time
.であれば、空の値が入力されます。
これではっきりしたかな :)
関連
-
[解決済み】MySQLエラー#1071 - 指定されたキーが長すぎる; キーの最大長は767バイトです。
-
[解決済み】MySQL 派生テーブルはすべて独自のエイリアスを持つ必要があります。
-
[解決済み】MySQL エラー #1133 - ユーザー テーブルに一致する行が見つかりません。
-
[解決済み] mysql.pluginテーブルを開くことができません。mysql_upgradeを実行し、作成してください。
-
[解決済み] MySQLを使用したパーセンタイル値の計算
-
[解決済み] mysql 拡張は非推奨で、将来的に削除されます: 代わりに mysqli か PDO を使ってください [重複] 。
-
[解決済み] SQLキー、MUL vs PRI vs UNI
-
[解決済み] 各単語の最初の文字を大文字にする(既存のテーブルの場合
-
[解決済み] MongoDBのようにMySQLにもTTLがあるのでしょうか?
-
[解決済み] エラー 2005 (hy000)。Google Cloud SQL クライアントの MySQL サーバーホスト '[35.232.51.216]' (0) が不明です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】#1273 - 不明な照合順序:'utf8mb4_unicode_520_ci'
-
[解決済み】MySQLエラー#1071 - 指定されたキーが長すぎる; キーの最大長は767バイトです。
-
[解決済み] Error Dropping Database (Can't rmdir '.test', errno: 17)
-
[解決済み] whereステートメントによるmysqlの一括更新
-
[解決済み] MYSQLのTIMESTAMP比較
-
[解決済み] アプリでSSLを有効にしていない場合、AzureのMySQLサーバーへの接続に失敗するのはなぜですか?
-
[解決済み] エラー1022 - 書き込みできません; テーブルに重複したキーがあります。
-
[解決済み] MySQLの更新datetimeフィールド
-
[解決済み] SQLSTATE[22003]: 数値の範囲外: 1264 範囲外の値です。
-
[解決済み] エラー 2005 (hy000)。Google Cloud SQL クライアントの MySQL サーバーホスト '[35.232.51.216]' (0) が不明です。