[trello-clone 03] 모델 정의

Subin·2020년 4월 5일
0

trello-clone

목록 보기
3/6

모델 정의

trello를 사용해 보신 분들은 알겠지만 board -> list -> card 순으로 자료를 정렬하는 구조를 가지고 있습니다. 그렇기 때문에 이런 형태의 model을 정리하려고 하는데요 그림으로 보시면 아래와 같은 구조가 됩니다.

express 모델 정의 (boards, lists, cards)

지난번 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;

profile
정확하게 알고, 제대로 사용하자

0개의 댓글