shere17652294
@shere17652294
Reviews Written
7
Average Rating
5.0
Posts
Q&A
Sequelize ๋ฌธ๋ฒ
User.findOne({where:{email}}); ์์ ์ฝ๋์์ ์ email์ด {} ์์ ๊ฐ์ธ์ ธ ์๋๊ฒ ๊ถ๊ธํ์ ๊ฑฐ ๊ฐ์๋ฐ ์ด {email}์ {email : email}๊ณผ ๊ฐ์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ es6(es2015) ๋์ ์ดํ ํค์ ๊ฐ์ด ๋์ผ ํ๋ค๋ฉด ์ด๋ฐ์์ผ๋ก { email : email } ์ { email }๋ก ํํ์ด ๊ฐ๋ฅํฉ๋๋ค. ํ๋ง๋๋ก ์ํ๋ผ์ด์ฆ ๋ฌธ๋ฒ์ด ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ด๋ผ๋๋ป์ด์ฃ ์ด์ ์ํ๋ผ์ด์ฆ๋ก ๋์ด์์ ์ฝ๋๋ฅผ ๋ค์ ํด์ํด๋ณด๋ฉด User๋ผ๋ ํ ์ด๋ธ์์ email ์ปฌ๋ผ์ email ๋ณ์๊ฐ ์ผ์นํ๋๊ฒ์ด ์๋ค๋ฉด User ๊ฐ์ฒด๋ฅผ ๋ฐํํ ๊ฒ์ด๊ณ ์๋๋ฉด undefined๋ก ๋ฐํ๋ ๊ฒ์ ๋๋ค. ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง์ฝ "abc1234@gmail.com"์ด๋ผ๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ ๋ email ๋ณ์์์ "abc1234@gmail.com"์ด๋ผ๋ ๋ณ์๊ฐ ์๋ค๋ฉด "abc1234@gmail.com"๋ก์ฐ๊ฐ ์๋ User ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ๊ฒ์ด์ฃ . ์ค์ํ์ ์ {email}์ด๋ฐ ๋ฌธ๋ฒ์ ํค์ ๊ฐ์ด ์๋ก ๊ฐ์ ๋ ์ด๋ฐ์์ผ๋ก ์ค์ผ ์ ์๋ค๋๊ฒ์ด๊ณ ํด๋น ์ฝ๋๋ User.findOne({where:{email}}); ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ email์ด๋ผ๋ ๋ณ์๊ฐ ์ ์ธ๋์ด์ผ๋ง ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ email์ด๋ผ๋ ๋ณ์๊ฐ email์ด๋ผ๋ ํค๊ฐ ์ค๋ณต๋๊ฒ์ ์ธ์งํ๊ณ ์์ ๊ฐ์ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ง์ฝ email์ด๋ผ๋ ๋ณ์๊ฐ ์๋ค๋ฉด ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํ ์ ์์ ๊ฒ์ ๋๋ค. const email = "abcd1234@gmail.com"; const obj = { email }; // email ๋ณ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ค์ฌ์ ์ฌ์ฉ๊ฐ๋ฅ console.log(obj.email); // abcd1234@gmail.com const obj = { email }; console.log(obj.email); // ReferenceError: email is not defined
- 0
- 1
- 318
Q&A
์ ๋ก์ด๋ imports ๋ชจ๋์๋ฌ๊ฐ ๋์ ์ง๋ฌธ๋๋ ค์
์ ๊ฐ ์ ๋ก์ด๋์ ์๋์ง๋ง ๊ท๋ธ ํ๋ ํด๋๋ฆฌ๋ฉด ํน์ ShopsService๋ฅผ UserRepository์์ ์ฌ์ฉํ์๋์? ๊ทธ๋ฆฌ๊ณ Shops ๋ชจ๋๋ด์์ ShopsRepository๊ฐ ์ฌ์ฉ๋์๋์? ๋ง์ฝ ShopsRepository๊ฐ ์ฌ์ฉ๋๋ค๋ฉด provider์ ShopsRepository๋ฅผ ๋ฃ์ด์ฃผ์ธ์. Shops ๋ชจ๋์์ ๋ค๋ฅธ ๋ชจ๋๋ก provider๋ฅผ ์ ๊ณตํด ์ฃผ๋ ค๋ฉด exports ๋ฐฐ์ด์ ๋ง๋ ํ ShopsService๋ฅผ ๋ฃ์ด์ฃผ์ธ์. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋ชจ๋(UserModule)์๊ฐ์ imports์ ShopModule์ ๋ฃ์ด์ฃผ์ธ์.
- 1
- 2
- 263
Q&A
1๋ฒ๋ฌธ์ ์๋ํ ์ง๋ฌธ
์ ๊ฐ 2๋ฒ ์ด๋ผ๋๊ฒ์ด ์ด๋ค๊ฒ์ธ์ง ๋ชฐ๋ผ์ ๊ทธ ๋ถ๋ถ์ ๋ํ ๋ต์ ๋ชป๋๋ ค์ ์ฃ์กํ์ง๋ง let ์ํ๋ค=["๋๊ตฌ๊ณต","๋ฐฐ๋๋ฏผํด์ฑ","ํ๊ตฌ์ฑ"] ์ด๊ฒ์ ๋ํด์ ์ด์ผ๊ธฐ ํด๋๋ฆด ์ ์์ต๋๋ค. ์๋ง ์ํ์ ๊ฐ์ฒด(ex = ๋๊ตฌ๊ณต, ๋ฐฐ๋๋ฏผํด์ฑ, ํ๊ตฌ์ฑ)๋ฑ๋ฑ์ ๋ง๋์๊ณ ๊ทธ๊ฒ์ ๋ฐฐ์ด๋ก์ ์ฌ์ฉํ์๋ ค๋ ๊ฑฐ ๊ฐ์ต๋๋ค. ๊ทธ๋์ ์ง๋ฌธ์๋๊ป์๋ let ๋๊ตฌ๊ณต={ ์ด๋ฆ:'~~~' ๊ฐ๊ฒฉ:'~~~~' ์ค๋ช :'~~~'} ์ด๋ฐ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋์ ๊ฑฐ์ฃ . ๊ฐ์ฒด๋ฅผ ๋ง๋ ๊ฑฐ ๊น์ง๋ ์ข์ต๋๋ค. ํ์ง๋ง ์ด ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ๋๊ตฌ๊ณต ์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. "๋๊ตฌ๊ณต"์ด ์๋๊ฑฐ์ฃ ๋ฐ์ดํ๋ฅผ ๋ถ์ด๋ ์๊ฐ ๊ทธ๊ฒ์ ๋ฌธ์์ด ์์ฒด๊ฐ ๋ฉ๋๋ค. ์ ํฌ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํด์ ๋ณ์์ด๋ฆ์ ์ ํ์ง๋ ์์ฃ . ๋ฐ๋ผ์ ๋ฐฐ์ด์ ๋ณ์๋ฅผ ์ ์ฅํ ๋๋ ๋ณ์ ์ด๋ฆ์ ์ฌ์ฉํด์ผํฉ๋๋ค. ๋ฐ๋ผ์ let ์ํ๋ค=["๋๊ตฌ๊ณต","๋ฐฐ๋๋ฏผํด์ฑ","ํ๊ตฌ์ฑ"] ์ด๋ฐ ๋ฐฐ์ด์์ let ์ํ๋ค=[๋๊ตฌ๊ณต, ๋ฐฐ๋๋ฏผํด์ฑ, ํ๊ตฌ์ฑ] ์ด๋ฐ์์ผ๋ก ์ฌ์ฉํ์ ์ผ ํฉ๋๋ค.
- 1
- 2
- 254
Q&A
${id}
๋ณ์๋ก ์ ์ํ ๋ฌธ์์ด์ consoleํน์ htmlํ์ผ๋ฑ์ ๋ํ๋ด๊ธฐ ์ํด ํ๋ ์ฒ๋ฆฌ ๋ฐฉ์์ ํ ํ๋ฆฟ ๋ฌธ์์ด ์ด๋ผ๊ณ ํฉ๋๋ค. ์ง๋ฌธ์๋์ ์ฝ๋๋ ์ค๋ฅ๊ฐ ๋ ์ ๋ฐ์ ์์ต๋๋ค. ํ ํ๋ฆฟ ๋ฌธ์์ด์ ํจ์์ ๋งค๊ฐ๋ณ์ ํน์ ๋ณ์ ๋ฑ์ ์๋ง ์ฌ์ฉ์ ํ ์ ์์ฃ . ํ ํ๋ฆฟ ๋ฌธ์์ด์ ์ฌ์ฉํ๋ ค๋ฉด ' ๋ฐ์ดํ๊ฐ ์๋ `์ ์ฌ์ฉํด์ผ ํฉ๋๋ค `๋ ๋ฐฑํฑ์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ์์ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ๋ฐ๊ฟ์ ์ฌ์ฉํด๋ณด์ธ์. app.get("/products/:id", (req, res) => { const params = req.params; const { id } = params; res.send(`id๋ ${id}์ ๋๋ค.`); }); ๋์ฑ ๊ฐ๋จํ ์ฌ์ฉํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์ฌ์ฉํด๋ณด์ธ์. app.get("/products/:id", (req, res) => { const id = req.params.id; res.send(`id๋ ${id}์ ๋๋ค.`); });
- 1
- 2
- 275
Q&A
๋์ ์ค ๊ด๋ จ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
์ ๊ฐ views๊ฐ ์๋ 'view'๋ผ๋ ํด๋๋ฅผ ๋ง๋ค์ด์ ์๊ธด ์ค๋ฅ์๋ค์. ๊ฐ์์ ๊ต์ ์ ๋ณด๊ณ ์์ต๋๋ค.ํ์ ์ง์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
- 0
- 2
- 999
Q&A
localhost ๋ธ๋ผ์ฐ์ ์ ์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค
์ฒซ๋ฒ์งธ ์ฝ๋์์ localhost:8080์ผ๋ก ์ ์ํ์๋๋ " Cannot GET / " ์ด ์ถ๋ ฅ๋์๊ณ /product์ ์ ์ํ์๋๋ ์ํ ์ ๋ณด๊ฐ ์ ์ถ๋ ฅ๋์๋ค ํ์ จ์ฃ ? ์ง๋ฌธ์๋์ ์ฝ๋์์๋ ์์ฃผ ์ ์์ ์ธ ์ถ๋ ฅ์ ๋๋ค. ๋ ๋ฒ์งธ ์ฝ๋์์๋ express ๋์ http ๋ชจ๋์ ์ฌ์ฉํ์ ์ ์๋ฒ๋ฅผ ์์ฑํ์ จ๋๋ฐ ์ถ๋ ฅ์ด ์ ์์ ์ธ ์ด์ ๋ ํด๋ผ์ด์ธํธ ์ชฝ์์ ์น์ฌ์ดํธ์ ์ ์ ํ ๋์๋ ํด๋น ์น์ฌ์ดํธ์ ์๋ฒ๋ก 'GET'์์ฒญ์ ํ์์ ์ผ๋ก ๋ณด๋ด๊ฒ ๋ฉ๋๋ค. ๋ ๋ฒ์งธ ์ฝ๋์์ http ๋ชจ๋๋ก ์๋ฒ๋ฅผ ๋ง๋ ํ ์๋ฒ์ ์ ์ ํ์๋๋ ์กฐ๊ฑด๋ฌธ์ผ๋ก ๋ฉ์๋์ URL(์ฃผ์)๋ฅผ ์ง์ ํด์ฃผ์ง ์๋ ํ GET "๋ฉ์๋" ๋ก / "URL"์ ์ ์ํ ์ํฉ์ด ๋ฉ๋๋ค. http ๋ชจ๋๋ก ๋ง๋ ์๋ฒ๊ฐ ๋์๊ฐ๊ณ ์์ ๋ ํด๋ผ์ด์ธํธ๊ฐ URL์ด localhost:8080์ธ ์น์ฌ์ดํธ์ ์ ์ํ๋ค๊ณ ๊ฐ์ ํ ๋ ์ง๋ฌธ์๋๊ป์ ๋ง๋์ index.js ์์ ์ฝ๋๋ฅผ ๋ณด์๋ฉด ์๋์ ๊ฐ์ต๋๋ค. const server = http.createServer(function (req, res) { const path = req.url; const method = req.method; if (path === "/products") { if (method === "GET") { res.writeHead(200, { "Content-Type": "application/json" }); const products = JSON.stringify([ { name: "๋๊ตฌ๊ณต", price: 5000, }, ]); res.end(products); } else if (method === "POST") { res.end("์์ฑ๋จ"); } } else { res.end("hello Client!"); } }); ์กฐ๊ฑด๋ฌธ ๋ถํฐ ์ฒ์ฒํ ๋ด ์๋ค. path๊ฐ "/products"๋ผ๋ฉด ๊ทธ ๋ค์ ์กฐ๊ฑด์ธ method๊ฐ "GET"์ธ ์กฐ๊ฑด์ ์ฐพ์ต๋๋ค. ๋ง์ฝ localhost:8080์ ์ ์ํด์ URL์ "/products"๋ฅผ ์ ๋ ฅํ๋ฉด ์์ ์กฐ๊ฑด์ด ์ฑ์ฌ๋๊ฒ ๋ฉ๋๋ค. else if๋ฅผ ๋ณด์๋ฉด method๊ฐ "POST"์ธ ์กฐ๊ฑด์ ์ฐพ๋๋ฐ ์ด๋ ์ ํฌ๊ฐ ์น๋ธ๋ผ์ฐ์ ๋ก ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ค๊ณ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๊ฐ ์๋๋๋ค. ๋ง์ฝ "POST" ์์ฒญ์ ์ด๋ป๊ฒ ๋ณด๋ด๋์ง ๊ถ๊ธํ์๋ค๋ฉด https://testmanager.tistory.com/342 ์์ ์ฃผ์์ ๋ค์ด๊ฐ์ ํ์ธํด๋ณด์ธ์. else์ ๊ฒฝ์ฐ๋ฅผ ๋ด ์๋ค. ์ด๋ ์์ ์กฐ๊ฑด๊ณผ ์๋ฌด๊ฒ๋ ์ฑ์ฌ ๋์ง ์์ ๋ ์ฌ์ฉํ๋ ์์ฝ์ด(ํค์๋)์ ๋๋ค. ๋ง์ฝ ์ ํฌ๊ฐ localhost:8080์ ์ ์ํ๋ค๋ฉด else๋ถ๋ถ์ด ๋ฐ๋ก ์คํ๋๊ฒ ๋ ๊ฒ์ ๋๋ค. index.js์์ ๋ง๋ ์ฝ๋์ ์กฐ๊ฑด์ ํด๋นํ๋๊ฒ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์ด๋ฐ์์ผ๋ก ์กฐ๊ฑด๋ฌธ ๋ถ๊ธฐ๋ฅผ ํตํด์ ์๋ฒ๋ฅผ ์์ฑํ๋๊ฒ ์ฌ๊ฐ ๊น๋ค๋ก์ด๊ฒ ์๋๋๋ค. ๊ทธ๋์ node.js์์ ์ ๊ณตํ๋ express๋ผ๋ ๋ชจ๋์ ์ฌ์ฉ ํ ์ ์์ต๋๋ค. express๋ก ์์ฑ๋ server.js๋ฅผ ๊ฐ์ด ๋ด ์๋ค. const express = require("express"); const cors = require("cors"); const app = express(); const port = 8080; app.use(express.json()); app.use(cors()); app.get("/products", (req, res) => { res.send({ products: [ { id: 1, name: "๋๊ตฌ๊ณต", price: 100000, seller: "์กฐ๋", imageUrl: "images/images/products/basketball1.jpeg", }, { id: 2, name: "์ถ๊ตฌ๊ณต", price: 50000, seller: "๋ฉ์", imageUrl: "images/images/products/soccerball1.jpg", }, { id: 3, name: "ํค๋ณด๋", price: 10000, seller: "๊ทธ๋ฉ", imageUrl: "images/images/products/keyboard1.jpg", }, ], }); }); app.post("/products", (req, res) => { res.send("์ํ์ด ๋ฑ๋ก๋จ"); }); app.listen(port, () => { console.log("์ผํ๋ชฐ ์๋ฒ๊ฐ ๋์๊ฐ๋ค"); }); ์ ์ฒด๋ฅผ ๋ค ์ค๋ช ํด๋๋ฆฌ๊ธฐ ๋ณด๋จ ์ง๋ฌธ์๋๊ป์ ๊ถ๊ธํ์ ๋ด์ฉ์ธ ์ localhost์ ์ ์ํ๋๋ฐ "Cannot Get / "์ด ๋์ค๋๊ฐ์ ๋ํด์๋ง ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค. express์ ์ฅ์ ์ ๋ฏธ๋ค์จ์ด(app.use(), app.get()๋ฑ๋ฑ)๋ฅผ ์ฌ์ฉํด์ ์๋ฒ์ ํ์ํ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ฝ๋ค๋ ๊ฒ์ ๋๋ค. ํน์ URL์ ์ํ๋ ๋ฉ์๋๋ฅผ ๋ณด๋ด๊ณ ์ถ๋คํ๋ค๋ฉด app.get("/products", (req, res) ...) ์ด๋ฐ์์ผ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด์ฃ . ๊ทผ๋ฐ ์ฌ๊ธฐ์ ์ฝ๋๊ฐ ์คํ๋๊ณ ์๋ฒ์ ์ ์ํ์ ๋ "Cannot Get / "์ด ์๋์ค๊ณ "/products"๋ฅผ ์ ๋ ฅํ๋ฉด ์ํ์ ๋ณด๋ ์๋ง๋์ค๋๊ฐ์ ๋ํด์ ์ดํด๋ด ์๋ค. "/products"๋ง ์๋์ค๋ ์ด์ ๋ ๋ฏธ๋ค์จ์ด๋ก app.get("/products")๋ฅผ ์์ฑํ์ จ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ ์ง๊ธ ์๋ฒ๊ฐ ์ ๋์๊ฐ๊ณ ์์์ ์๋ ค์ค๋๋ค. "Cannot Get /"์ ํด์ํด๋ณด๋ฉด "/"์ผ๋ก GET ํ ์ ์๋ค ์ ๋๋ค. ์ ํฌ๊ฐ ๋ธ๋ผ์ฐ์ ๋ก ์น์ ์ ์ํ๋ค๋ฉด ์๋ฅผ ๋ค์ด ๊ตฌ๊ธ์ ์ ์ํด ๋ณธ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. URL์ด www.google.com์ธ ๊ฒ์ ํ์ธํด ๋ณผ์ ์์๊ฒ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์๋ ์ฌ์ค "/"์ด ์๋ต๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์ผ๋ URL์ www.google.com/์ธ ๊ฒ์ด์ฃ server.js ์์๋ GET๋ฉ์๋๋ก "/"์ ์ ์ํ๋ค๋ ๋ฏธ๋ค์จ์ด๋ฅผ ๋ง๋ค์ด ์ฃผ์ ๋ค๋ฉด ํด๊ฒฐ๋๋ ๋ฌธ์ ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด ์๋์ฒ๋ผ ๋ง๋ค ์ ์์ต๋๋ค. app.get("/", (req, res) => { res.send("์ฌ๊ธฐ๋ ์๋ฒ์ ์ฒ์ ์ ์ ํ ๋ ๋์ค๋ ํ๋ฉด์ ๋๋ค!"); }); ์ด๋ฐ์์ผ๋ก ๋ง๋์๊ณ ์๋ฒ๋ฅผ ๋ค์ ์คํ ํ localhost:8080(index.js์์ ๋ง๋ port๋ฒํธ, port๋ฒํธ๋ ๋ณธ์ธ์ด ์ํ๋ ์ซ์๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค.)๋ก ์ ์ํ์ ๋ค๋ฉด ์ด์ ๋์ด์ Cannot get / ์ด ๋์ค์ง ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ฝ๋ ์ ์ฒด๋ฅผ ๋ค์ ์ฌ๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค. const express = require("express"); const cors = require("cors"); const app = express(); const port = 8080; app.use(express.json()); app.use(cors()); app.get("/", (req, res) => { res.send("์ฌ๊ธฐ๋ ์๋ฒ์ ์ฒ์ ์ ์ํ์ ๋ ๋์ค๋ ํ๋ฉด์ ๋๋ค!"); }); app.get("/products", (req, res) => { res.send({ products: [ { id: 1, name: "๋๊ตฌ๊ณต", price: 100000, seller: "์กฐ๋", imageUrl: "images/images/products/basketball1.jpeg", }, { id: 2, name: "์ถ๊ตฌ๊ณต", price: 50000, seller: "๋ฉ์", imageUrl: "images/images/products/soccerball1.jpg", }, { id: 3, name: "ํค๋ณด๋", price: 10000, seller: "๊ทธ๋ฉ", imageUrl: "images/images/products/keyboard1.jpg", }, ], }); }); app.post("/products", (req, res) => { res.send("์ํ์ด ๋ฑ๋ก๋จ"); }); app.listen(port, () => { console.log("์ผํ๋ชฐ ์๋ฒ๊ฐ ๋์๊ฐ๋ค"); }); ๋ ๋ฒ์งธ ์ง๋ฌธ์์ localhost:3000์ ์ ์ํ์ ๋ ํ๋ฉด์ด ์๋ฌด๊ฒ๋ ๋์ค์ง ์์ผ์ จ๋ค ํ๋๋ฐ ํฌํธ๋ฒํธ๋ฅผ 3000์ผ๋ก ์ค์ ํ์ง ์์ผ์๋ฉด ๋์ค์ง ์๋๊ฒ ์ ์์ ๋๋ค. ํฌํธ๋ ์์ฑํ์ ์ฝ๋์์ port๋ณ์๋ฅผ ์ํ๋ ์ซ์๋ก ํด์ฃผ์๋ฉด ๋ ๊ฑฐ ๊ฐ์ต๋๋ค. ๋ต๋ณ์ด ๋๋ฌด ๊ธธ์ด์ ์ฃ์กํ์ง๋ง ์ง๋ฌธ์๋๊ป ์ต๋ํ ๋์ ๋๋ฆฌ๊ณ ์ ๋ง์ด ๋์์์ด ๊ธธ์ด์ง ๊ฑฐ ๊ฐ์ต๋๋ค. ๋๋ฌด ์ง์ค์ ์ธ ๋ต๋ณ์ ๋ต๋ณ์ ์ดํดํ๋๋ฐ ์ด๋ ค์์ด ์์๊น ํด์ ๊ธธ๊ฒ ์ ๊ฒ๋์์ต๋๋ค. ๋์์ด ๋์ จ์ผ๋ฉด ์ข๊ฒ ๋ค์.
- 1
- 2
- 1.3K
Q&A
app.use์ req.url
(์ฌ์ง) ์์์ ๋ถํฐ GET, POST, PUT ์ผ๋ก ์์ฒญ์ ๋ณด๋์ต๋๋ค. (์ฌ์ง) ์ ์ฌ์ง์ ํฌ์คํธ๋งจ์ด๋ผ๋ ํ๋ก๊ทธ๋จ์ผ๋ก GET, POST, PUT ์์ฒญ์ ๋ณด๋์ต๋๋ค.
- 0
- 2
- 419
Q&A
exios ์ค๋ฅ์ง๋ฌธ
์ผ๋จ ์ฝ๋ ์์ ๋ฌธ์ ๋ ์ ํ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฒซ๋ฒ์งธ ํ๋ฉด์์ ์ฝ์์ ๋ณด๋ ํต์ ๊ฒฐ๊ณผ์ ์๋ Object ๊ฐ์ฒด์ data ํ๋กํผํฐ(Object ๊ฐ์ฒด ๋ด์ ์๋ ํค)๊ฐ ์ ๋ฐ ํ์์ผ๋ก ๋์ค์ง ์์ต๋๋ค. ์๋์ ์ฌ์ง๊ณผ ๋น๊ตํด๋ณด์๋ฉด ์์๊ฒ ์ง๋ง products ํ๋กํผํฐ๊ฐ ์ ๋ ฌ๋ ๋ชจ์ต์ด ๋ณด์ ๋๋ค. (์ฌ์ง) ๊ทธ๋ฆฌ๊ณ ์ง๋ฌธ์๋์ ์ฌ์ง์ ๋ณด์๋ฉด ํต์ ๊ฒฐ๊ณผ : ๋ฐ์ค ๋ถ๋ถ์ ๋นจ๊ฐ์ ๊ธ์จ๋ก ์ด์ํ๊ฒ ์จ์ง ๊ธ์จ๋ค์ด ๋ณด์ ๋๋ค. ์ด๋ ํฌ์คํธ๋งจ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ๋ฐ์ดํฐ๊ฐ ๋ณด๋ด์ง ๋ ์๋ฌ๊ฐ ๋๊ฒ ์ฒ๋ผ ๋ณด์ ๋๋ค. (์๋ ์ฌ์ง์ ์ง๋ฌธ์๋์ ๊ฒ๊ณผ ๋ค๋ฅผ ์ ์์ต๋๋ค.) (์ฌ์ง) ์ ์ฌ์ง์ฒ๋ผ e.g๋ฅผ ๋๋ฆ ๋๋ค. (์ฌ์ง) ๋ฐ๋์ ๋ด์ฉ์ ๋ค์ ํ๋ฒ ์ ๋ ฅํด๋ด ๋๋ค. (์ฌ์ง) ๋ค์ send๋ฅผ ๋๋ฌ ๋ชฉ์๋ฒ๋ก ๋ฐ์ดํฐ(JSON)๋ฅผ ๋ณด๋ ๋๋ค. ์ด์ axios๋ฅผ ๋ถ๋ฌ์ค๋ ์ฝ๋์ ๊ฐ์ ๋ค์ ์คํํด ๋ณด์ธ์. ์ ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๊ฒช์ด ๋ณธ์ ์ด ์์๋๋ฐ example์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์์ฑ ํด์ ์ ์ฅ ํ ์ ์กํ๋๋ ์ค๋ฅ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 2
- 2
- 440
Q&A
for๋ฌธ์ ๋๋ฉด์ const์ ์ฌํ ๋น ๋๋ฉด ์๋ ์๋ฌ๊ฐ ๋์ผํ์ง ์๋์? ๊ทธ๋ฆฌ๊ณ ์์ ์์ let (๋๋ var)๋์ const๋ฅผ ์ฌ์ฉํ์ ์ด์ ๊ฐ ๋ฐ๋ก ์์๊น์?
const๋ฅผ ์ฌ์ฉํ์๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๊ณ ํ์ จ๋๋ฐ for (var i = 0; i const product = products[i] const price = product.price ์ด ๋ถ๋ถ์์ const๋ก ์ฌํ ๋น ๋๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฑฐ๋ผ ์๊ฐํ์ ๊ฑฐ ๊ฐ์๋ฐ const product์๋ ๋ฐ๋ณต๋ฌธ์ด ๋๊ธฐ์ ์๋ ๊ฐ์ด ํ ๋น๋์ง ์์ undefined์ํ์ผ ๊ฒ์ ๋๋ค. ๋ฐ๋ณต๋ฌธ์ด ๋๋ฉด์ i๊ฐ 0๋ถํฐ ๋๊ธฐ ์์ํ ํ ๋ฐ ์ค์ํ ๊ฒ์ products๋ผ๋ ๋ณ์์ธ๋ฐ์ products๋ณ์๋ getExpensiveProducts ํจ์ ์์ ์๋ ์ํ ๋ณ์ (array) ์ ๋๋ค. ์ฝ๋์ ๋์์์ง๋ ์์ง๋ง ์ํ ๋ณ์์ ๊ธธ์ด( == ์ํ์ ์ )๋ฐ๋ผ์ ๋ฐ๋ณต๋ฌธ ๋ฒ์ (0 { name: "์ถ๊ตฌ๊ณต", price: 45000, } ์ด ๋ฐ์ดํฐ๊ฐ products[i]์ ๋ค์ด์ค๊ฒ ๋ฉ๋๋ค. ๊ฒฐ๊ตญ const product์๋ i ์ธ๋ฑ์ค ์์์ ๋ฐ๋ผ์ product๋ฅผ ์ ๋ ฅ ๋ฐ๊ณ ์ ๋ ฅ๋ฐ์ product์ price๊ฐ์ฒด๋ฅผ price๋ณ์์ ๋ค์ด์ต๋๋ค. ์ด๋ ๊ฒ ์ฒซ๋ฒ์งธ(i = 0) ๋ฐ๋ณต๋ฌธ์ด ๋๊ณ ๋๋ฒ์งธ ๋ฐ๋ณต๋ฌธ(i = 1)์ ์ฐจ๋ก๊ฐ ์ฌ๋ product๋ณ์๊ฐ const๋ก ์ ์ธ๋์ด์ ๊ฐ์ ์ฌํ ๋น ํ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฑฐ๋ผ ์๊ฐํ์์ง๋ง ์ง๊ธ(์ฒซ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ด ๋ฐฉ๊ธ ์ข ๋ฃ๋๊ณ ๋๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ด ์์๋ ์ํฉ)์ด ํ๋ก๊ทธ๋จ์ product๋ณ์๊ฐ ์์ ์๋ค๊ณ ํ๋จํฉ๋๋ค. ์ด์ ๋ const๋ก ์ ์ธ๋ ๋ณ์๋ {}๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ฌธ์ฅ (ํจ์, ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ ๋ฑ๋ฑ) ๋ฐ์์ ์ฌ์ฉํ ์ ์๊ณ ๋ฐ๋ณต๋ฌธ์ด ํ๋ฒ ์คํ๋ ์ํ๋ผ๋ฉด ๋๋ฒ์จฐ ๋ฐ๋ณต๋ฌธ์์๋ ์ ์ด์ ์กด์ฌํ์ง ์์๋ ์ํ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ฌํ ๋น์ ํด๋ ์ค๋ฅ๊ฐ ๋ฐ์๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ณ์ํด์ const๋ก ์ ์ธ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋๊ฑฐ์ฃ ๋ ๋ฒ์งธ ์ง๋ฌธ์์ const๋ก ์ ์ธํ๋ฉด ๋ฐ๊ฟ์ ์์ด์ let์ด๋ var๋ก ์ ์ธํ๋๊ฒ ๋ง๋๊ฒ ์๋๊ฐ๋ผ๊ณ ํ์ จ๋๋ฐ ์์ ๋์ผํ ๋ ผ๋ฆฌ๋ก ์ค๋ช ํ ์ ์๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ES6์ดํ๋ก ์๊ธด ๋ณ์ ํ์ ์ธ let, const๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ var ์ฌ์ฉ์ ๊ธฐํผํด์ผ ํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ ์ด์ ๋ ํธ์ด์คํ ์ด๋ผ๋ ์๋ฆฌ ๋๋ฌธ์ธ๋ฐ์ ํธ์ด์คํ ๊ด๋ จ ์ค๋ช ์ https://hanamon.kr/javascript-%ED%98%B8%EC%9D%B4%EC%8A%A4%ED%8C%85%EC%9D%B4%EB%9E%80-hoisting/ ์ด ๋งํฌ๋ก ๊ฐ์๋ฉด ๋ ๊ฑฐ๊ฐ์ต๋๋ค. ์ถ๊ฐ์ ์ผ๋ก vsc๊ฐ์ idle๋ฅผ ์ฌ์ฉํ์๋ฉด ๋๋ฒ๊น ์ ํตํด์ ์ด๋ค ๋ถ๋ถ์ด ์๋ชป๋์๋์ง ์ง์ ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 3
- 4
- 2.3K




