ショッピングモールの作成-DB設定


Basket model

const Sequelize=require('sequelize');

module.exports=class Basket extends Sequelzie.Model{
	static init(sequelize){
		return super.init({
			basketproduct:{
				type:Sequelize.STRING(50),
				allowNull:false,
			},
			ordercount:{
				type:Sequelize.INTEGER,
				allowNull:false,
			}
		},{
			sequelize,
			timestamps:true,
			underscored:false,
			modelName:'Basket',
			tableName:'baskets',
			charset:'utfmb4',
			collate:'utfmb4_general_ci',
		})
	}
}
ショッピングバスケットモデル.バスケット製品(ショッピングバスケットに入った商品)、ordercount(入った数)欄を追加しました.

Buy model

const Sequelize=require('sequelize');

module.exports=class Buy extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			buyproduct:{
				type:Sequelize.STRING(50),
				allowNull:false,
			},
			buycount:{
				type:Sequelize.INTEGER,
				allowNull:false,
			}
		},{
			sequelize,
			timestamps:true,
			underscored:false,
			modelName:'Buy',
			tableName:'buys',
			charset:'utf8mb4',
			collate:'utf8mb4_general_ci',
		})
	}
}
購入した商品の型番.buyproduct(購入した商品)、buycount(購入数)欄が追加されました.

Comment model

const Sequelize=require('sequelize');

module.exports=class buy extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			rating:{
				type:Sequelize.INTEGER,
				allowNull:false,
			},
			content:{
				type:Sequelize.STRING(500),
				allowNull:false,
			}
		},{
			sequelize,
			timestamps:true,
			underscored:false,
			modelName:'Comment',
			tableName:'comments',
			charset:'utf8',
			collate:'utf8_general_ci',
		})
	}
}
これはレビュー(商品レビュー)モデルです.格付け・内容(商品コメント)欄が追加されました.

Hashtag model

const Sequelize=require('sequelize');

module.exports=class Hashtag extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			title:{
				type:Sequelize.STRING(50),
				allowNull:false,
				unique:true,
			},
		},{
			sequelize,
			timestamps:true,
			modelName:'Hashtag',
			tableName:'hashtags',
			charset:'utf8mb4',
			collate:'utf8mb4_general_ci',
		})
	}
};
ラベルモデル.商品検索時に、商品に登録されているラベルのモデルを保存します.title(ラベル名)バーのみが追加されました.

Product model

const Sequelize=require('sequelize');

module.exports=class Product extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			name:{
				type:Sequelize.STRING(50),
				allowNull:false,
			},
			img:{
				type:Sequelize.STRING(300),
				allowNull:false,
			},
			content:{
				type:Sequelize.STRING(500),
				allowNull:false,
			},
			price:{
				type:Sequelize.INTEGER,
				allowNull:false,
			},
			remaincount:{
				type:Sequelize.INTEGER,
				allowNull:false,
			},
			hashtag:{
				type:Sequelize.STRING(500),
				allowNull:true,
			}
		},{
			sequelize,
			timestamps:true,
			underscored:false,
			modelName:'Product',
			tableName:'products',
			charset:'utf8mb4',
			collate:'utf8mb4_general_ci',
		})
	}
}
ショッピングモールに登録された商品情報を格納するモデルです.name(商品名)、img(商品画像パス)、content(商品説明)、price(商品価格)、remaincount(在庫数)、hashtag(ラベル)欄が追加されています.

User model

const Sequelize=require('sequelize');

module.exports=class User extends Sequelize.Model{
	static init(sequelize){
		return super.init({
			email:{
				type:Sequelize.STRING(40),
				allowNull:false,
			},
			nick:{
				type:Sequelize.STRING(50),
				allowNull:false,
			},
			password:{
				type:Sequelize.STRING(200),
				allowNull:false,
			},
			auth:{
				type:Sequelize.STRING(10),
				allowNull:false,
			}
		},{
			sequelize,
			timestamps:true,
			paranoid:true,
			modelName:'User',
			tableName:'users',
			charset:'utf8',
			collate:'utf8_general_ci',
		})
	}
}
ショッピングモールを使ってユーザー情報を格納するパターンです.メール(電子メール)、nick(ニックネーム)、パスワード(パスワード)、auth(権限)バーが追加されました.
authの値によって管理者または一般ユーザーに区別できます.
また,モデル間の関係は次の文章で整理する.