trello를 사용해 보신 분들은 알겠지만 board -> list -> card 순으로 자료를 정렬하는 구조를 가지고 있습니다. 그렇기 때문에 이런 형태의 model을 정리하려고 하는데요 그림으로 보시면 아래와 같은 구조가 됩니다.
지난번 express 서버에 model을 정의 하겠습니다.
./model/board.js
module.exports = (sequelize, DataTypes) =>
sequelize.define(
'board',
{
boardId: {
type: DataTypes.STRING(100),
allowNull: false,
},
title: {
type: DataTypes.STRING(100),
allowNull: false,
},
},
{
timestamps: true,
paranoid: true,
},
);
./model/list.js
module.exports = (sequelize, DataTypes) =>
sequelize.define(
'list',
{
listId: {
type: DataTypes.STRING(100),
allowNull: false,
},
title: {
type: DataTypes.STRING(100),
allowNull: false,
},
},
{
timestamps: true,
paranoid: true,
},
);
./model/card.js
module.exports = (sequelize, DataTypes) =>
sequelize.define(
'card',
{
cardId: {
type: DataTypes.STRING(100),
allowNull: false,
},
title: {
type: DataTypes.STRING(100),
allowNull: false,
},
},
{
timestamps: true,
paranoid: true,
},
);
./model/index.js
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require('../config/config')[env];
const db = {};
const sequelize = new Sequelize(
config.database,
config.username,
config.password,
config,
);
db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.User = require('./user')(sequelize, Sequelize);
// board, list, card model 생성
db.Board = require('./board')(sequelize, Sequelize);
db.List = require('./list')(sequelize, Sequelize);
db.Card = require('./card')(sequelize, Sequelize);
db.User.hasMany(db.Board);
db.Board.belongsTo(db.User); // board model에 userId 추가
db.Board.hasMany(db.List, { foreignKey: 'boardId' });
db.List.belongsTo(db.Board, { foreignKey: 'boardId' }); // list model에 boardId 추가
db.List.hasMany(db.Card, { foreignKey: 'listId' });
db.Card.belongsTo(db.List, { foreignKey: 'listId' }); // card model에 listId 추가
module.exports = db;