๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[E-Commerce App with REST API] (8) Product ์ƒ์„ฑ(POST) & ์กฐํšŒ(GET) & Product ์ˆ˜์ • (PUT) & ์‚ญ์ œ (DELETE) & ์กฐํšŒ (GET) ๋‹ค์–‘ํ•˜๊ฒŒ ๋ฐ”๊ฟ”๋ณด๊ธฐ ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป ๋ฐฑ์—”๋“œ(Back-End)/Node js

[E-Commerce App with REST API] (8) Product ์ƒ์„ฑ(POST) & ์กฐํšŒ(GET) & Product ์ˆ˜์ • (PUT) & ์‚ญ์ œ (DELETE) & ์กฐํšŒ (GET) ๋‹ค์–‘ํ•˜๊ฒŒ ๋ฐ”๊ฟ”๋ณด๊ธฐ

์ง•์ง•์•ŒํŒŒ์นด 2023. 3. 24. 01:59
728x90
๋ฐ˜์‘ํ˜•

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” Developers Corner ์˜ ์œ ํŠœ๋ธŒ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

=> Node.js E-Commerce App with REST API: Let's Build a Real-Life Example!

 

๐ŸŒท Product Schema & Route & Controller ๊ตฌ์„ฑ 

 

๐ŸŒท Product Schema๋ฅผ MongoDB์— ์ „์†ก (POST) 

 

๐ŸŒท Product Schema ์กฐํšŒ (GET)

id๋กœ ํ•œ ์ƒํ’ˆ ์กฐํšŒ & ๋ชจ๋“  ์ƒํ’ˆ ์กฐํšŒ

 

๐ŸŒท Product ์ˆ˜์ • (PUT)

slugify : ํ…์ŠคํŠธ๋ฅผ url ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
slug : ์ด๋ฏธ ์–ป์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํšจํ•œ URL์„ ์ƒ์„ฑ (URL๊ณผ ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉ)

npm i slugify

 

โœ… ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•˜๋Š” title์„ slug ํ˜•ํƒœ๋กœ ์ง‘์–ด๋„ฃ๊ธฐ

req.body.slug = slugify(req.body.title);

slug๊ฐ€ ์ €๋ ‡๊ฒŒ ๋ฐ”๋€œ

 

โœ… ์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ๊ด€๋ฆฌ์ž์ธ์ง€ middleware ๊ฒ€์ฆํ•˜๊ธฐ

 

๐ŸŒท Product ์‚ญ์ œ (DELETE)

์‚ญ์ œํ•˜๊ณ ์ž ํ•˜๋Š” id๋ฅผ API๋กœ ๋„˜๊ฒจ~

 

๐ŸŒท All Product ์กฐํšŒ

โœ… category๊ฐ€ ๊ฐ™์€ ๊ฑฐ ๋ผ๋ฆฌ ์กฐํšŒ

notebook ๋ผ๋ฆฌ ์กฐํšŒ๋จ

 

โœ… ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ

replace() ํ•จ์ˆ˜

: str_text.replace(/์ฐพ์„ ๋ฌธ์ž์—ด/gi, "๋ณ€๊ฒฝํ•  ๋ฌธ์ž์—ด")

 

$gte // ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’๋งŒ ํฌํ•จ, ์ด์ƒ
$gt // ํฐ ๊ฐ’๋งŒ ํฌํ•จ, ์ดˆ๊ณผ
$lte // ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’๋งŒ ํฌํ•จ, ์ดํ•˜
$lt // ์ž‘์€ ๊ฐ’๋งŒ ํฌํ•จ, ๋ฏธ๋งŒ

50000์› ๋ณด๋‹ค ์ž‘์€ price ๋งŒ ์กฐํšŒ

 

โœ… JSON ๋ฌธ์ž์—ด <-> Javascript ๊ฐ์ฒด ๋ฐ˜ํ™˜

// JSON.stringify : JavaScript ๊ฐ’์ด๋‚˜ ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
let queryStr = JSON.stringify(queryObj);

// JSON.parse : JSON ๋ฌธ์ž์—ด์„ ์ธ์ž๋กœ ๋ฐ›๊ณ  ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ JavaScript ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜
const query = Product.find(JSON.parse(queryStr));

JSON ๋ฌธ์ž์—ด์—์„œ๋Š” ํ‚ค(key)๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ๋ฐ˜๋“œ์‹œ ์Œ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์ค˜์•ผ ํ•จ

const str = `{
  "name": "ํ™๊ธธ๋™",
  "age": 25,
  "married": false,
  "family": { "father": "ํ™ํŒ์„œ", "mother": "์ถ˜์„ฌ" },
  "hobbies": ["๋…์„œ", "๋„์ˆ "],
  "jobs": null
}`;

JavaScript ๊ฐ์ฒด์—์„œ๋Š” ์Œ๋”ฐ์˜ดํ‘œ๋ฅผ ๊ผญ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์Œ

{
    name: "ํ™๊ธธ๋™",
    age: 25,
    married: false,
    family: {
        father: "ํ™ํŒ์„œ",
        mother: "์ถ˜์„ฌ"
    },
    hobbies: [
        "๋…์„œ",
        "๋„์ˆ "
    ],
    jobs: null
}

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•
Comments