

์ค๋ ๋ชฉํ๋ ์ต์ 2-5๊น์ง ์๊ฐ!!
: ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ ๋๋ง๋ค ์ด์ ์ ๋ฐฉ๋ฌธํ๋ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ๋ ๋ฐ์ดํฐ ํ์ผ, ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์ฌ์ดํธ์ ๊ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ทจ์ฝํ ์ ์์, ๋ฌธ์์ด ํ์์ผ๋ก ์กด์ฌํ๋ฉฐ ์ฟ ํค ๊ฐ์๋ ์ธ๋ฏธ์ฝ๋ก (;)์ผ๋ก ๊ตฌ๋ถ๋จ
: ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์๋ง ์ ์ฅํจ. ์ผ๋ฐ์ ์ผ๋ก ์ธ์ Id๋ฅผ ์ฟ ํค๋ฅผ ์ด์ฉํด ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ์ฌ, ์๋ฒ๋ ์ด ์ธ์ Id๋ฅผ ์ด์ฉํด ์ ์ฅ๋ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํจ. ๋ณด์์ฑ์ ์ข์ผ๋ ์ฌ์ฉ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ์๋ฒ์ ์ ์ฅํด์ผํ๋ ๋ฐ์ดํฐ๊ฐ ๋ง์์ ธ ์๋ฒ ์ปดํจํฐ๊ฐ ๊ฐ๋น ๋ชปํ ์ ์์
app.get("/set-cookie", (req, res) => {
let expire = new Date();
expire.setMinutes(expire.getMinutes() + 60); // ๋ง๋ฃ ์๊ฐ์ 60๋ถ์ผ๋ก ์ค์ ํฉ๋๋ค.
//1. Set-Cookie ์ฌ์ฉํ์ฌ Cookie ํ ๋น
res.writeHead(200, {
'Set-Cookie': `name=sparta; Expires=${expire.toGMTString()}; HttpOnly; Path=/`,
});
//2. res.cookie ์ด์ฉํ์ฌ Cookie ํ ๋น
res.cookie('name', 'sparta', {
expires: expires
});
return res.end();
});
app.get('/get-cookie', (req, res) => {
const cookie = req.headers.cookie;
console.log(cookie); // ์ถ๋ ฅํ๋ฉด name=sparta
//cookie-parser ๋ฏธ๋ค์จ์ด ์ฌ์ฉํ ๊ฒฝ์ฐ
const cookies = req.cookies;
console.log(cookies); // ์ถ๋ ฅํ๋ฉด { name: 'sparta' }
return res.status(200).json({ cookie });
});
yarn add cookie-parser // ํฐ๋ฏธ๋
// app.js
import cookieParser from 'cookie-parser';
app.use(cookieParser());
-> ์ฌ์ฉํ ์ฝ๋๋ ์์ ์ฝ๋์์ ํ์ธ ๊ฐ๋ฅ
/* set-session API ์์ฑ*/
let session = {};
app.get('/set-session', function (req, res, next) {
const name = 'sparta';
const uniqueInt = Date.now(); // ์ธ์
์ ์ฌ์ฉ์์ ์๊ฐ ์ ๋ณด ์ ์ฅ
// session ๊ฐ์ฒด์ uniqueInt๋ฅผ key, name์ value๋ก ์ ์ฅ
session[uniqueInt] = { name };
res.cookie('sessionKey', uniqueInt);
return res.status(200).end();
});
/* get-session API ์์ฑ*/
app.get('/get-session', function (req, res, next) {
const { sessionKey } = req.cookies;
console.log(session);
// ํด๋ผ์ด์ธํธ์ ์ฟ ํค์ ์ ์ฅ๋ ์ธ์
ํค๋ก ์๋ฒ์ ์ธ์
์ ๋ณด๋ฅผ ์กฐํ.
const name = session[sessionKey];
return res.status(200).json({ name });
});
model Users {
userId Int @id @default(autoincrement()) @map("userId")
email String @unique @map("email")
password String @map("password")
createdAt DateTime @default(now()) @map("createdAt")
updatedAt DateTime @updatedAt @map("updatedAt")
userInfos UserInfos?
posts Posts[]
@@map("Users")
}
userInfos์ ๊ฒฝ์ฐ 1:1์ ๊ด๊ณ์ด๋ฏ๋ก ?๊ฐ ๋ถ์ง๋ง posts์ ๊ฒฝ์ฐ 1:N์ด๋ฏ๋ก [ ]๋ก ๊ฐ์ธ์ค๋ค.
user Users @relation(fields: [userId], references: [userId], onDelete:Cascade)
model Posts์ UserInfos์ ๋ค์ด๊ฐ๋ ์ฝ๋. fields์์๋ ํ์ฌ ํ ์ด๋ธ์ ์นผ๋ผ์ด, references ์์๋ ์ฐธ์กฐํ ํ ์ด๋ธ(์ฝ๋์์๋ Users)์ ์นผ๋ผ์ ์ด๋ค. onDelete:Cascade์ ๊ฒฝ์ฐ ์ฐธ์กฐํ ์นผ๋ผ์ ์ ๋ณด๊ฐ ์ฌ๋ผ์ง๋ฉด ๊ฐ์ด ์ฌ๋ผ์ง๊ฒ ํ๋ค๋ ์๋ฏธ.