ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ



๊ฐ„๋งŒ์— Sequelize๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ๋ฒˆ์—๋Š” ํ…Œ์ด๋ธ” ์ •์˜๊นŒ์ง€๋งŒ ํ•ด๋ณด์•˜๋Š”๋ฐ ํ…Œ์ด๋ธ” ์ •์˜ ์ค‘ ์™ธ๋ž˜ํ‚ค์— ๊ด€ํ•œ ๊ฑธ ํฌ์ŠคํŒ… ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋Ÿฐ ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ๋…๋ฆฝ์ ์ธ ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•˜๋Š”๊ฑด ๋ฌด์˜๋ฏธํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ๋•Œ๋ฌธ์— ์ด๋ถ€๋ถ„์„ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ž˜ํ‚ค์˜ ์ •์˜์™€ ๊ฐ™์€ ์ž์„ธํ•œ ๊ฐœ๋…์€ ์ƒ๋žตํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.




์ผ๋‹จ ์ œ ํ…Œ์ด๋ธ”์˜ ์ •์˜๋Š” ์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.


์ผ๋‹จ ํ…Œ์ด๋ธ” ์ •์˜๋ฅผ ํ•œ jsํŒŒ์ผ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


[user.js]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var models = require('../models');
module.exports = function (sequelize, DataTypes) {
  const user = sequelize.define('User', {
      name: {
          field: 'name'
          type: DataTypes.STRING(20), 
          allowNull:false
      },
      nick: {
          field: 'nick'
          type: DataTypes.STRING(20), 
          allowNull:false
      },
      user_id: {
          field: 'user_id'
          type: DataTypes.STRING(50), 
          allowNull: false,
          unique: true
      },
      password: {
          field: 'password'
          type: DataTypes.STRING(30), 
          allowNull:false
      },
      }, {
    // don't use camelcase for automatically added attributes but underscore style
    // so updatedAt will be updated_at
    charset: 'utf8',
    collate: 'utf8_unicode_ci',
    underscored: true,
 
    // disable the modification of tablenames; By default, sequelize will automatically
    // transform all passed model names first parameter of define) into plural.
    // if you don't want that, set the following
    freezeTableName: true,
 
    // define the table's name
    tableName: 'user'
    });
    user.associate = function(models) {
        models.User.hasMany(models.Code, {
            foreignKey: 'fk_userId',
            onDelete: 'cascade'
        });
    };
    return user;
};
 
cs



[code.js]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module.exports = function (sequelize, DataTypes) {
  const code = sequelize.define('Code', {
      title: {
          field: 'title'
          type: DataTypes.STRING(10), 
          allowNull: false 
      },
      code: {
          field: 'code'
          type: DataTypes.STRING(100), 
          allowNull: false 
      },
  }, {
    // don't use camelcase for automatically added attributes but underscore style
    // so updatedAt will be updated_at
    underscored: true,
 
    // disable the modification of tablenames; By default, sequelize will automatically
    // transform all passed model names (first parameter of define) into plural.
    // if you don't want that, set the following
    freezeTableName: true,
 
    // define the table's name
    tableName: 'code'
  });
    return code;
};
 
cs


๋‘ ํ…Œ์ด๋ธ” ์ •์˜๋ฌธ์„ ๋ณด๋ฉด ๊ตฌ์กฐ๋Š” ๊ฑฐ์˜ ๋น„์Šทํ•œ๋ฐ user ํ…Œ์ด๋ธ” ํ•˜๋‹จ์— 


1
2
3
4
5
6
user.associate = function(models) {
    models.User.hasMany(models.Code, {
        foreignKey: 'fk_userId',
        onDelete: 'cascade'
    });
};
cs


์ด์™€๊ฐ™์ด ์ž‘์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด codeํ…Œ์ด๋ธ”์— fk_userId ๋ผ๋Š” ์ƒˆ๋กœ์šด ํ•„๋“œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. fk_userId ๋ผ๋Š” ํ•„๋“œ๋Š” userํ…Œ์ด๋ธ”์˜ primary key ์™€ ๋™์ผํ•œ ์†์„ฑ์„ ๊ฐ€์ง€๋Š” ํ•„๋“œ๋กœ ์ •์˜๋˜๋ฉฐ, ์—ฌ๊ธฐ์„œ๋Š” userํ…Œ์ด๋ธ”์˜ idํ•„๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. onDelete ๋ผ๋Š”๊ฒƒ์€ user ํ…Œ์ด๋ธ”์˜ idํ•„๋“œ ๊ฐ’์ด ์‚ญ์ œ๋˜์—ˆ์„ ๋•Œ code ํ…Œ์ด๋ธ”์—์„œ fk_userId ํ•„๋“œ๊ฐ€ ๋™์ผํ•œ id๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ์ผ๊ด„์ ์œผ๋กœ ์‚ญ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. 



์˜ˆ๋ฅผ๋“ค๋ฉด A๋ผ๋Š” ํšŒ์›์ด ๊ธ€์„ 3๊ฐœ ์ป๋Š”๋ฐ A๋ผ๋Š” ํšŒ์›์ด ํšŒ์›ํƒˆํ‡ด๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด A๊ฐ€ ์“ด ๊ธ€์€ ๋‹ค ์ง€์›Œ์ ธ์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด์ฃ .


๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•ด๋ณด์ž๋ฉด ์ด๋Ÿฐ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.






sql์˜ delete ๋ฌธ์„ ์จ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



id ๊ฐ€ 2์ธ userํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ํ•œ ํ–‰์„ ์‚ญ์ œํ–ˆ๋”๋‹ˆ code ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ๋ชจ๋‘ ์‚ญ์ œ๊ฐ€ ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.code ํ…Œ์ด๋ธ”์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋“ค์€ ๋ชจ๋‘ userํ…Œ์ด๋ธ”์˜ id๊ฐ€ 2์ธ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋˜ ๋ฐ์ดํ„ฐ์˜€๋˜ ๊ฒƒ์ด์ฃ .



์ง€๊ธˆ๊นŒ์ง€๋Š” ํ…Œ์ด๋ธ” ์ •์˜๋งŒ jsํŒŒ์ผ์„ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œ๋Š” SQL๋ฌธ์„ ํ†ตํ•ด ์‹ค์Šตํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ์ •์˜๋ถ€๋ถ„์ด ์–ผ์ถ” ์ •๋ฆฌ๋˜๋ฉด ์ดํ›„์—๋Š” ๋ฐ์ดํ„ฐ์กฐ์ž‘์–ด (INSERT, UPDATE, DELETE) ์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•๋„ js๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
๊ธ€ ๋ณด๊ด€ํ•จ