[MEMO APP] Back-end/ DB์ฐ๊ฒฐ (3)
๐จ๐ป DB์ฐ๊ฒฐ (3)
๐ model ๋ง๋ค๊ธฐ
์ด๋ฒ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์์ฑ๋ ๋ฐ์ดํฐ๋ค์ ํ์ ๋ง๋ค์ด์ค๊ฒ๋๋ค.
์ด ํ์ model ์ด๋ผ๊ณ ๋ถ๋ฌ์. ์.. ๋ญ๋๊น ์ฌ์ฉํด๋ณธ ์ฌ๋์ ์ ์ฅ์ผ๋ก์ ๋ง์๋๋ฆฌ์๋ฉด ์ฅ๊ณ ์ ORM๊ณผ ๋น์ทํฉ๋๋ค. ์๋ ๋ชฝ๊ณ ๋๋น๋ ORM์ ์ง์ํด์ค๋ค๊ณ ํ๋ค์ ^^
์๋ฌดํผ! ํ๋ฒ ๋ง๋ค์ด ๋ณด๋๋ก ํ์ฃ !
์ฐ๋ฆฌ๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ง์ด๋ฃ์์ง๋ฅผ ์๊ฐํ๊ธฐ ์ํด์๋ ์ผ๋จ ์ด๋ค ์๋น์ค๋ฅผ ๋ง๋ค๊ฒ์ธ๊ฐ๋ถํฐ ์์ํด์ผํฉ๋๋ค.
(์ฌ์ค ์ด๋ฌํ IT ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋๊ฒ์ ์ค๊ณ๋จ๊ณ๊ฐ ์ ๋ง ์ค์ํด์. ๋จผ์ ์ ์๋์ด์ผ ํ๋ ๊ณผ์ ์ด์ง๋ง, ์ฌ์ด๋ ํ๋ก์ ํธ์ด๊ธฐ ๋๋ฌธ์ ๊ณผ๊ฐํ ์๋ตํฉ๋๋ค. ์ดํ ์๊ธฐ๋ ๋ฌธ์ ๋ ๋ฏธ๋์ ๋์๊ฒ ๋งก๊ธฐ.. )
์ผ๋จ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค ์๋น์ค๋ ๊ฐ๋จํ TodoList ๋ฉ๋ชจ์ฅ์ ๋ง๋ค๊ฒ๋๋ค.
๊ทผ๋ฐ ๋๋ฌด ๊ฐ๋จํ๋ฉด ์ฌ๋ฏธ๊ฐ ์์ผ๋๊น, ํ์๊ฐ์ ์ ํตํด ์ ์ ๋ณ ๋ฉ๋ชจ์ฅ์ ๊ด๋ฆฌํด์ฃผ๊ณ ๊ทธ๋ฃน์์ฑ์ ํตํด ๊ทธ๋ฃน๋ณ ๊ณตํต ํ ์ผ์ ์ง์ ํ ์ ์๋๋ก ํ ๊ฒ์.
์ ๊ทธ๋ผ ์ด๋ค ํ ์ด๋ธ๋ค์ด ํ์ํ ๊น์?
- ์ ์ ํ ์ด๋ธ (ํ์๊ด๋ฆฌ)
- Todolist ํ ์ด๋ธ (๋ฉ๋ชจ๋ค)
- ๊ทธ๋ฃน ํ ์ด๋ธ (๊ทธ๋ฃน์ ๋ณด)
์ ๋ฆฌํด ๋ณด๋ ์ด์ ๋๊ฐ ๋ ๊บผ๊ฐ๋ค์. ์ถํ ํ์ํด์ง๋ ์ ๋ณด๋ค์ ๊ทธ๋๊ฐ์ updateํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์ ์ ํ ์ด๋ธ ์์ฑ์ ์ํ ๋ชจ๋ธ์ ๋ง๋ค์ด๋ณผ๊น์? ์ด๋ฆ์ User ๋ก ํ ๊ฒ์.
๋ชจ๋ธ์ ์์ฑํ๊ธฐ์ ์ ์ด ๋ชจ๋ธ๋ค์ ๊ด๋ฆฌํ models๋ผ๋ ์ด๋ฆ์ ํด๋๋ฅผ dbํด๋์์ ์์ฑํด์ฃผ๊ณ ๊ทธ์์ User.js๋ฅผ ๋ง๋ค์ด์ฃผ๋๋ก ํ ๊ฒ์.
์ด์์ ๋ชจ๋ธ์ ์ํ ์์ค์ฝ๋๋ฅผ ์์ฑํด๋ณด๋๋ก ํ ๊ฒ์.
๋ค์ด๊ฐ ๋ด์ฉ์ ๋๋ค์, ์ด๋ฉ์ผ, ํจ์ค์๋, ๊ทธ๋ฆฌ๊ณ ๊ณ์ ์์ฑ์๊ฐ ์ ๋?
๋ค์์ ์ฌ์ง์ฒ๋ผ ์์ฑํด์ฃผ์ธ์.
const mongoose = require('mongoose');
const User = new mongoose.Schema({
displayName: String,
email: String,
password: String,
createdAt: {
type: Date,
default: Date.now,
},
});
module.exports = mongoose.model('User', User);
์ ์ ๋ชจ๋ธ์ ๋ง๋ค์์ผ๋ ๋ค์์ Todo ๋ชจ๋ธ์ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
(์ด๋ฆ์ Todo.js ๋ผ๊ณ ํ ๊ฒ์.)
์์๋ค์ด๊ฐ ๋ด์ฉ์ Todo ์ ๋ชฉ, ๋ด์ฉ, ์๋ฃ์ฌ๋ถ, ์์ฑํ์ฌ๋, ์์ฑ์๊ฐ ์ ๋?
๋ค์ ์ฌ์ง์ฒ๋ผ ๋ง๋ค์ด๋ณด๋๋ก ํ ๊ฒ์.
const mongoose = require('mongoose');
const Todo = new mongoose.Schema({
title: String,
content: String,
complete: Boolean,
user: { // ํด๋น ๋ฉ๋ชจ๋ฅผ ์์ฑํ User
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
},
createdAt: {
type: Date,
default: Date.now,
},
});
module.exports = mongoose.model('Todo', Todo);
์ด๋ ๊ฒ ๋ฉ๋ชจ๋ฅผ ๋ง๋ค๊ธฐ์ํ ๊ธฐ์ด๋ชจ๋ธ์ ๋ค ๋ง๋ค์ด์ก๊ณ , ๊ทธ๋ฃน์ ๋ง๋ค๊ณ ๊ทธ๋ฃน๋ณ ํ ์ผ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ์ ๊ธฐ๋ฅ๊ณผ ์ ์ ๋ณ ๋ฉ๋ชจ๊ธฐ๋ฅ์ ๋ค ๋ง๋ ๋ค์์ ์ถ๊ฐํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ๊น์ง DB๊ด๋ จ๋ด์ฉ์ด์๊ตฌ ๋ค์ ํฌ์คํ ๋ถํฐ๋ ํน์ ๊ฒฝ๋ก๋ก ์์ฒญ์ ํ์๊ฐ์ ์ด ์ด๋ฃจ์ด์ง๋๋ก Controller ์์ฑ์์ ๋ฑ์ ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์๊ณ ํ์ จ์ด์
'Gorilla-Kim > Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MEMO APP] Back-end/ REST API-Register (2) (0) | 2020.03.18 |
---|---|
[MEMO APP] Back-end/ REST API-Register (1) (0) | 2020.03.18 |
[MEMO APP] Back-end/ DB์ฐ๊ฒฐ (2) (0) | 2020.03.17 |
[MEMO APP] Back-end/ DB์ฐ๊ฒฐ (1) (0) | 2020.03.16 |
[MEMO APP] Back-end/ ๋ผ์ฐํ (2) (0) | 2020.03.15 |