์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- algorith
- create UI
- ๋ฐฑ์ค
- ์๊ณ ๋ฆฌ์ฆ
- udemy
- functinon
- ์์ด๋ฒ๋ฆฐ๊ดํธ
- Github
- mysql
- ํ์ด์ฌ
- SourceTree
- ๊น
- ํธ์ฌ์ค๋ฅ
- remote : Invalid username or password
- Nodejs ๊ต๊ณผ์
- APP
- Push
- HTTP
- Listing Data on IOS
- Mac
- nodejs
- REST
- SWIFT
- BOJ
- Python
- IOS
- ํ๋ฆฌํ์คํธ
- ์์คํธ๋ฆฌ
- git
- commit
- Today
- Total
YoonC
[Nodejs ๊ต๊ณผ์] ์ํ๋ผ์ด์ฆ ๋ณธ๋ฌธ
๐ก์ํ๋ผ์ด์ฆ๋ MySQL์ ์์ ์ ์์ํ๊ฒ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก์จ ORM
(Object-relational Mapping : ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฆด๋ ์ด์ ๋งตํ)์ผ๋ก ๋ถ๋ฅ๋๋ค.
==> ์ฌ์ฉํ๋ ์ด์ : ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌ๋ฌธ์ ์์์ SQL๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ ๋๋ฌธ (SQL์ธ์ด ๋ชฐ๋ผ๋ OK)
1) MySQL ์ฐ๊ฒฐํ๊ธฐ
์ํ๋ผ์ด์ฆ๋ฅผ ํตํด ์ต์คํ๋ ์ค ์ฑ๊ณผ MySQL ์ฐ๊ฒฐํด์ฃผ์ด์ผ ํจ
...
const { sequelize } = require('./models');
const app = express();
app.set('port', process.env.PORT || 3001);
app.set('view engine', 'html');
nunjucks.configure('views', {
express: app,
watch: true,
});
sequelize.sync({ force: false })
.then(() => {
console.log('๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ฑ๊ณต');
})
.catch((err) => {
console.error(err);
});
...
: ์ํ๋ผ์ด์ฆ๋ฅผ ๋ถ๋ฌ์์ sync ๋ฉ์๋๋ฅผ ์ด์ฉํด ์๋ฒ ์คํ์ MySQL๊ณผ ์ฐ๋๋๋๋ก ํ๋ ๊ณผ์
2) ๋ชจ๋ธ ์ ์ํ๊ธฐ
MySQL์์ ์ ์ํ ํ ์ด๋ธ์ ์ํ๋ผ์ด์ฆ์์๋ ์ ์ํด ์ฃผ์ด์ผ ํ๋๋ฐ
์ํ๋ผ์ด์ฆ๋ ๋ชจ๋ธ๊ณผ MySQL ํ ์ด๋ธ์ ์ฐ๊ฒฐํ๋ ์ญํ ์ ์ํํจ. ์ฑ ์์๋ User, Comment ๋ชจ๋ธ ์์ฑํจ
๋ชจ๋ธ์ Sequelize.Model์ ํ์ฅํ ํด๋์ค๋ก ์ ์ธํ๋ฉฐ ํฌ๊ฒ ๋๊ฐ์ง ๋ฉ์๋๋ก ๋๋จ
- static init ๋ฉ์๋ : super.init ๋ฉ์๋. 1th ์ธ์๋ ํ ์ด๋ธ ์ปฌ๋ผ์ ๋ํ ์ค์ , 2th ์ธ์๋ ํ ์ด๋ธ ์ต์
- ์ํ๋ผ์ด์ฆ๋ ์์์ id๋ฅผ ๊ธฐ๋ณธํค๋ก ์ฐ๊ฒฐํ๋ฏ๋ก id ์ปฌ๋ผ์ ํ์๊ฐ ์์
- ์ํ๋ผ์ด์ฆ์ ์๋ฃํ์ MySQL์ ์๋ฃํ๊ณผ ์ฝ๊ฐ ๋ค๋ฆ (ํ์ํ ๋ ์ฐพ์๋ณผ๊ฒ)
- ํ
์ด๋ธ์ต์
์ผ๋ก๋ sequelize, timestamps, underscored, modelName, tableName,
paranoid, charset, collate ๋ฑ์ด ์์
- static associate ๋ฉ์๋ : ๋ค๋ฅธ๋ชจ๋ธ๊ณผ์ ๊ด๊ณ ์ ์
ํ์ index.js์ ๋ชจ๋ธ์ ์ฐ๊ฒฐํด์ค๋ค. db.User=User; User.associate(db)์ ํ์
์ฆ db๋ผ๋ ๊ฐ์ฒด์ ๋ชจ๋ธ์ ๋ด์ ํ ๋ค๋ฅธํ ์ด๋ธ๊ณผ์ ๊ด๊ณ๋ฅผ ์ฐ๊ฒฐํ๋ associate ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ฃผ๋ ๊ฒ
3) ๊ด๊ณ ์ ์ํ๊ธฐ
ใฑ) 1:N ๊ด๊ณ
static associate ๋ฉ์๋ ์์ ์ฌ๋ฌ ๊ด๊ณ๋ฅผ ๊ฐ์ง ๋ชจ๋ธ์๋ hasMany ๋ฉ์๋ (sourceKey ์์ฑ)๋ฅผ
ํ๋์ ์ฐ๊ฒฐ๋์ด ์๋ ์ฌ๋ฌ ๋ชจ๋ธ๋ค์๋ belongsTo (targetKey ์์ฑ) ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ค
ใด) 1:1 ๊ด๊ณ
hasMany ๋์ hasOne ๋ฉ์๋๋ฅผ ์ฌ์ฉ(sourceKey ์์ฑ) belongsTo ๋ฉ์๋๋ ๋์ผ (targetKey ์์ฑ)
ํ์ง๋ง belongsTo๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ธ์ UserId ์นผ๋ผ์ด ์ถ๊ฐ๋๋ฏ๋ก ์ฃผ์ํด์ผ ํจ
ใท) N:M ๊ด๊ณ
๋ค๋๋ค ๊ด๊ณ๋ก ์์ชฝ ๋ชจ๋ธ ๋ชจ๋ belongsTo ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ ์๋ก์ด ๋ชจ๋ธ์ด ์์ฑ๋๋ค.
์๋ก์ด ๋ชจ๋ธ์ ์ด๋ฆ์ through ์์ฑ์ ์ฐ๋ฉด ๋จ
4) ์ฟผ๋ฆฌ ์์๋ณด๊ธฐ
์ํ๋ผ์ด์ฆ๋ก CRUD ์์ ์ ์คํํ๊ธฐ ์ ์ ์์์ผ ํ๋๊ฒ์ด ์ํ๋ผ์ด์ฆ ์ฟผ๋ฆฌ.
์ฟผ๋ฆฌ๋ ํ๋ก๋ฏธ์ค๋ฅผ ๋ฐํํ๋ฏ๋ก then์ ๋ถ์ฌ ๊ฒฐ๊ด๊ฐ์ ๋ฐ์ ์ ์์ผ๋ฉฐ async/await ๋ฌธ๋ฒ๊ณผ ๊ฐ์ด ์ฌ์ฉ ๊ฐ๋ฅ
๊ด๊ณ์ฟผ๋ฆฌ..
'Develop > Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
REST? RESTful API?? (0) | 2021.03.26 |
---|---|
[Nodejs ๊ต๊ณผ์] ๋ชฝ๊ณ ๋๋น (3) | 2021.03.18 |
[Nodejs ๊ต๊ณผ์] MySQL (0) | 2021.03.17 |
[Nodejs] MySQL ๋๋ฒ๐จ (0) | 2021.03.17 |
[Nodejs ๊ต๊ณผ์] Http ๋ชจ๋ (0) | 2021.03.05 |