hanamon.kr์—์„œ ์ด๋ฏธ์ง€์ฐธ์กฐ

 

 

ORM์ด๋ž€?
ORM(Object Relational Mapping)์€ ๊ฐ์ฒด์™€ ๊ด€๊ณ„์™€์˜ ์„ค์ •์„ ์˜๋ฏธํ•œ๋‹ค.

๋” ์ž์„ธํžˆ ๋งํ•˜์ž๋ฉด, ๋งํ•˜๋Š” ๊ฐ์ฒด(Object)๋Š” OOP (Object_Oriented Programming)์˜ ๊ฐ์ฒด๋กœ ๊ตฌํ˜„๋˜๋Š” ํด๋ž˜์Šค์™€ RDB (Realational DataBase)์—์„œ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ์ธ ํ…Œ์ด๋ธ”์„ ์ž๋™์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ํด๋ž˜์Šค์™€ ํ…Œ์ด๋ธ”์€ ์„œ๋กœ ํ˜ธํ™˜๊ฐ€๋Šฅ์„ฑ์„ ๋‘๊ณ  ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ๋•Œ๋ฌธ์— ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋ฐ, ์ด๋ฅผ ORM์„ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ SQL๋ฌธ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ๋ถˆ์ผ์น˜๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. 

 

 

ORM์˜ ์žฅ์ 

 

1. ๊ฐ์ฒด ์ œํ–ฅ์ ์ธ ์ฝ”๋“œ๋กœ ์ธํ•ด ๋” ์ง๊ด€์ ์ด๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค. 

  • ORM์„ ์ด์šฉํ•˜๋ฉด SQL๋ฌธ์ด ์•„๋‹Œ ์ง๊ด€์ ์ธ ์ฝ”๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜์—ฌ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค. 
  • ์„ ์–ธ๋ฌธ, ํ• ๋‹น, ์ข…๋ฃŒ ๊ฐ™์€ ๋ถ€์ˆ˜์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. 
  • ๊ฐ์ข… ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๋ณ„๋„๋กœ ์ž‘์„ฑํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.
  • SQL์˜ ์ ˆ์ฐจ์ ์ด๊ณ  ์ˆœ์ฐจ์ ์ธ ์ ‘๊ทผ์œผ๋กœ ๊ฐ์ฒด์ง€ํ–ฅ์  ์ ‘๊ทผ๋งŒ ๊ณ ๋ ค๋˜์–ด ์ƒ์‚ฐ์„ฑ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

2. ์žฌ์‚ฌ์šฉ, ์œ ์ง€๋ณด์ˆ˜, ๋ฆฌํŒฉํ† ๋ง์ด ํŽธ๋ฆฌํ•˜๋‹ค. 

  • ORM์€ ๊ธฐ์กด ๊ฐ์ฒด์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์–ด, ํ•ด๋‹น ๊ฐ์ฒด๋“ค์€ ์žฌํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋งคํ•‘์ •๋ณด๊ฐ€ ๋ช…ํ™•ํ•˜์—ฌ ERD๋ฅผ ๋ณด๋Š” ์˜์กด๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค.

 

3. DRMS (DataBase Management System)์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด ์ค„์–ด๋“ ๋‹ค. 

  • ๋Œ€๋ถ€๋ถ„ ORM์†”๋ฃจ์…˜์€ DB์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค. (๊ตฌํ˜„๋ฐฉ๋ฒ•๊ณผ ๋งŽ์€ ์†”๋ฃจ์…˜, ์ž๋ฃŒํ˜• ํƒ€์ž…๊นŒ์ง€ ์ข…์†์ ์ด์ง€ ์•Š๋‹ค.)
  • ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ์ฒด(Object)์— ์ง‘์ค‘ํ•จ์œผ๋กœ์„œ ๊ทน๋‹จ์ ์œผ๋กœ DBMS๋ฅผ ๊ต์ฒดํ•˜๋Š” ํฐ ์ž‘์—…์—๋„ ๋ฆฌ์Šคํฌ๊ฐ€ ์ ๊ณ  ์†Œ์š”์‹œ๊ฐ„๋„ ์ค„์–ด๋“ ๋‹ค. 
  • ์ž๋ฐ”์—์„œ ๊ฐ€๊ณตํ•  ๊ฒฝ์šฐ equals, hashCode์˜ ์˜ค๋ฒ„๋ผ์ด๋“œ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฐ€๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

ORM์˜ ๋‹จ์ 

 

1. ORM์œผ๋กœ๋งŒ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. 

  • ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ํŽธ๋ฆฌํ•˜์ง€๋งŒ, ์„ค๊ณ„๋Š” ๋งค์šฐ ์‹ ์ค‘ํ•˜๊ฒŒ ํ•ด์•ผํ•œ๋‹ค. 
  • ํ”„๋กœ์ ํŠธ ๋ณต์žก์„ฑ์ด ์ปค์งˆ ๊ฒฝ์šฐ ๋‚œ์ด๋„ ๋˜ํ•œ ์˜ฌ๋ผ๊ฐ€๋ฉฐ, ๋ถ€์กฑํ•œ ์„ค๊ณ„๋กœ ์†๋„ ์ €ํ•˜๋‚˜ ์ผ๊ด€์„ฑ์„ ๋ฌด๋„ˆ๋œจ๋ฆฌ๋Š” ๋ฌธ์ œ์ ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

 

2. ์ ˆ์ฐจ๊ฐ€ ๋งŽ์€ ์‹œ์Šคํ…œ์—๋Š” ORM์˜ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ์žฅ์ ์„ ํ™œ์šฉํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

  • ์ ˆ์ฐจ๊ฐ€ ๋งŽ์€ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ฐ”๊ฟ”์•ผํ•˜๋ฉฐ, ๊ทธ ๊ณผ์ •์—์„œ ์ƒ์‚ฐ์„ฑ ์ €ํ•˜ ๋˜๋Š” ๋ฆฌ์Šคํฌ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

ORM๊ณผ Node.js ํ”„๋ ˆ์ž„์›Œํฌ

ORM์€ Node.js ์ถ”์ƒํ™”๊ณ„์ธต์˜ ๊ณ ๋ คํ•ด์•ผํ•  ๊ฐ€์žฅ ๋†’์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”์ด๋‹ค. ORM์˜ ์š”์ ์ฒ˜๋Ÿผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ์ฒด์— ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Node.js ORM, Sequelize๋Š” Postgres, MySQL, MariaDB, SQLite ๋“ฑ์„ ์ง€์›ํ•˜๋Š” Promize์— ๊ธฐ๋ฐ˜ํ•œ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

 

 

 

์•„๋ž˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

https://yceffort.kr/2021/07/dont-use-nodjs-orm

 

Home

yceffort

yceffort.kr

 

Node.js ํ”„๋กœ์ ํŠธ๋ฅผ 

ํ™œ์„ฑํ™”์‹œํ‚ค๋ฉด์„œ ์ž๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š”

"package.json"

์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.


npm ์ด๋ž€?

 

npm์€ Node Package Manager์˜ ์•ฝ์–ด๋กœ, ๋ช…์นญ ๊ทธ๋Œ€๋กœ ๋…ธ๋“œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์ด๋‹ค.

 

๋…ธ๋“œ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํ“จํ„ฐ์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ํŒจํ‚ค์ง€๋กœ npm์— ๋“ฑ๋ก๋˜์–ด ์žˆ์œผ๋ฉฐ

ํŠน์ • ๊ธฐ๋Šฅ์˜ ํŒจํ‚ค์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด npm ์—์„œ ์ฐพ์•„ ์„ค์น˜ํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

package.json

ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๋‹ค๋ณด๋ฉด ํŒจํ‚ค์ง€๊ฐ€ ์–ด๋งˆ์–ด๋งˆํ•ด์ง„๋‹ค.
์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€๋Š” ์ €๋งˆ๋‹ค ๊ณ ์œ ํ•œ ๋ฒ„์ „์ด ์žˆ์œผ๋ฉฐ,
๋™์ผํ•œ ๋ฒ„์ „์„ ์„ค์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ์ˆ˜ ์žˆ๋‹ค. 

์ด๋•Œ ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ์„
package.json ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 

package.json ์„ค์น˜ํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํด๋” ๋‚ด๋ถ€์— ๋ฌด์กฐ๊ฑด package.json๋ถ€ํ„ฐ ๋งŒ๋“ค๊ณ  ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค!

npm init -y

* -y : ๋ชจ๋“  ํ•ญ๋ชฉ์— Yes๋ฅผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

ํ”„๋กœ์ ํŠธ ์ด๋ฆ„, ์„ค๋ช… ๋“ฑ์„ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, 

'npm init'๋กœ ์‹คํ–‰์‹œํ‚ค๊ณ  ์ฝ˜์†”์ฐฝ์—์„œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์•„๋ž˜์˜ ํ˜•์‹์œผ๋กœ package.json ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ๋‚˜์˜จ๋‹ค.

{
  "name": "ํ”„๋กœ์ ํŠธ ์ด๋ฆ„",
  "version": "ํ”„๋กœ์ ํŠธ ๋ฒ„์ „",
  "description": "ํ”„๋กœ์ ํŠธ ์„ค๋ช…",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "์ž‘์„ฑ์ž ์ด๋ฆ„",
  "license": "ISC",
  }
}

 

 

 

package.json ์ž‘์„ฑ์‹œ ์•Œ์•„๋‘๊ธฐ

package name :

ํŒจํ‚ค์ง€ ์ด๋ฆ„์œผ๋กœ Package.json์˜ name ์†์„ฑ์— ์ €์žฅ๋œ๋‹ค. 

 

version :

ํŒจํ‚ค์ง€ ๋ฒ„์ „์€ SemVer์˜ ๋ฐฉ์‹์˜ ๋ฒ„์ „ ๋„˜๋ฒ„๋ง์„ ๋”ฐ๋ผ ํ•ญ์ƒ ์„ธ์ž๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. 

 

package.json์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•ญ๋ชฉ์€ "name" ๊ณผ "version" ์ด๋‹ค.

์ด 2๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ํ†ตํ•ด ํŒจํ‚ค์ง€ ๊ณ ์œ ์„ฑ์„ ํŒ๋ณ„ํ•˜๊ฒŒ ๋œ๋‹ค.

ํ•„์ˆ˜ ํ•ญ๋ชฉ์ด๋ฉฐ, ํ•ด๋‹น ๋‚ด์šฉ์ด ์—†์œผ๋ฉด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ ํ•  ์ˆ˜ ์—†๋‹ค.

 

 

description :

๋ฌธ์ž์—ด๋กœ ๊ธฐ์ž…ํ•ด์•ผํ•˜๋ฉฐ, 

npm search๋กœ ๊ฒ€์ƒ‰๋œ ๋ฆฌ์ŠคํŠธ์— ํ‘œ์‹œ๋˜์–ด ๋งŒ๋“ค์–ด์ง„ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ๊ณ  ์ดํ•ดํ•˜๋Š” ๋„์›€์„ ์ค€๋‹ค. 

 

entry point :

์ž๋ฐ”์Šคํฌ๋ฆผํŠธ ์‹คํ–‰ํŒŒ์ผ ์ง„์ž…์ . ๋ณดํ†ต ๋งˆ์ง€๋ง‰์œผ๋กœ module.exports๋ฅผ ํ•˜๋Š” ํŒŒ์ผ์„ ์ง€์ •ํ•œ๋‹ค. 

package.json์˜ main์†์„ฑ์— ์ €์žฅ๋œ๋‹ค.

 

test commend

์ฝ”๋“œ ํ…Œ์ŠคํŠธ ์‹œ ์ž…๋ ฅํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

package.json scripts ์†์„ฑ์•ˆ์˜ test ์†์„ฑ์— ์ €์žฅ๋œ๋‹ค.

 

git repository :

์ฝ”๋“œ๋ฅผ ์ €์žฅํ•ด๋‘” ๊นƒ ์ €์žฅ์†Œ ์ฃผ์†Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์†Œ์Šค์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์‚ฌ์šฉ์ž๋“ค์ด ์ด ์ €์žฅ์†Œ์— ๋ฐฉ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜๊ฑฐ๋‚˜

์ฝ”๋“œ ์ˆ˜์ •๋ณธ์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. package.json repository ์†์„ฑ์— ์ €์žฅ๋œ๋‹ค.

 

keywords : ํ‚ค์›Œ๋“œ๋ฅผ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์„ค๋ช…๋˜๋ฉฐ,

npm search๋กœ ๊ฒ€์ƒ‰๋œ ๋ฆฌ์ŠคํŠธ์— ํ‘œ์‹œ๋˜์–ด ๋งŒ๋“ค์–ด์ง„ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ๊ณ  ์ดํ•ดํ•˜๋Š” ๋„์›€์„ ์ค€๋‹ค.

 

bugs :

ํ”„๋กœ์ ํŠธ์˜ ์ด์Šˆ์™€ ๋ฒ„๊ทธ ํŠธ๋ ˆํ‚น์„ ๋ณผ์ˆ˜์žˆ๋Š” url ๋˜๋Š” ์ด์Šˆ๋ฅผ ์•Œ๋ฆด email ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. 

ํŒจํ‚ค์ง€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์‹œ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

 license

ํŒจํ‚ค์ง€ ์‚ฌ์šฉ์ž๋“ค์ด ๋งŒ๋“ค์–ด์ง„ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ๊ถŒํ•œ์„ ์–ป๊ณ ,

์–ด๋–ค ๊ธˆ๊ธฐ ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์ด์„ผ์Šค๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค. 

 

dependencies :

ํŒจํ‚ค์ง€ ์„ค์น˜์‹œ, ํŒจํ‚ค์ง€ ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ์„ค์น˜๋œ ๋ฒ„์ „์ด ์ €์žฅ๋œ๋‹ค.  

 

devDenpendencies :

ํŒจํ‚ค์ง€ ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด, ํŒจํ‚ค์ง€ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฌธ์„œ ์ž‘์„ฑ์— ์‚ฌ์šฉ๋˜๋Š”

์™ธ๋ถ€ ํ”„๋ ˆ์ž„ ์›Œํฌ๋Š” ๋‹ค์šด๋กœ๋“œ๋ฅผ ์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. 

์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ, devDependencies ๊ฐ์ฒด์— ๋””ํŽœ๋˜์‹œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.  

 

 

 

 

๋” ์ž์„ธํ•œ ์‚ฌํ•ญ์€ ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

https://docs.npmjs.com/cli/v8/configuring-npm/package-json

๊ฒŒ์‹œ๊ธ€ ํŽ˜์ด์ง€

 

ํ”„๋กœ์ ํŠธ: ๊ฒŒ์‹œ๊ธ€ ํŽ˜์ด์ง€

์„ค๋ช…: ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ, ๋“ฑ๋ก, ์ˆ˜์ • ์‚ญ์ œ์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์—ฐ์Šต์„ ์œ„ํ•ด ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

์ œ์ž‘: 2022.03.18 ~2022.03.24

 

์‹œ์—ฐ์˜์ƒ: https://youtu.be/hJivoIls7AQ

๊นƒํ—ˆ๋ธŒ: https://github.com/moonhjang/node_1

 


 

์‚ฌ์šฉ ๊ธฐ์ˆ 
  • Server: AWS EC2 (Ubuntu 18.04 LTS)
  • Framework: Express, Mongoose (Node.js)
  • Database: MongoDB
  • front-end: HTML5, CSS3, Javascript, Jquery, bootstrap

 


 

ํ•ต์‹ฌ ๊ธฐ๋Šฅ
  • ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์กฐํšŒํŽ˜์ด์ง€
    • ์ œ๋ชฉ, ์ž‘์„ฑ์ž๋ช…, ์ž‘์„ฑ๋‚ ์งœ ์กฐํšŒ
    • ์ž‘์„ฑ ๋‚ ์งœ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
    • ํŠน์ • ๊ฒŒ์‹œ๊ธ€ ์„ ํƒ์‹œ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒํŽ˜์ด์ง€๋กœ ์ด๋™
  • ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑํŽ˜์ด์ง€
    • ์ œ๋ชฉ, ์ž‘์„ฑ์ž๋ช…, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ž‘์„ฑ๋‚ด์šฉ ์ž…๋ ฅ ํ›„ ์ €์žฅ
    • ์ž…๋ ฅ๋ž€์ด ๋น„์–ด์žˆ์„ ์‹œ, "์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" ์•Œ๋žŒ๋„์šฐ๊ธฐ
  • ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒํŽ˜์ด์ง€
    • ์ œ๋ชฉ, ์ž‘์„ฑ์ž๋ช…, ์ž‘์„ฑ๋‚ ์งœ, ์ž‘์„ฑ ๋‚ด์šฉ ์กฐํšŒ
  • ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •/์‚ญ์ œํŽ˜์ด์ง€
    • ์ž…๋ ฅ๋ž€์ด ๋น„์–ด์žˆ์„ ์‹œ, "์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" ์•Œ๋žŒ๋„์šฐ๊ธฐ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•  ์‹œ, ์ˆ˜์ •/์‚ญ์ œ ๊ฐ€๋Šฅ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์‹œ, "๋น„๋ฐ€๋ฒˆํ˜ธ ๋ถˆ์ผ์น˜" ์•Œ๋žŒ๋„์šฐ๊ธฐ

 


 

Trouble Shooting 

 

Node.js์˜ ์‹œ์Šคํ…œ์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ์ฑ„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. 1~2์ผ์ฐจ์€ Node.js์— ๋Œ€ํ•ด์„œ ๋ฐฐ์› ๊ณ , 3~4์ผ์ฐจ์—๋Š” ์›น์‚ฌ์ดํŠธ์˜ ๋ฐฑ์—”๋“œ ์—ญํ• ์— ์ง‘์ค‘ํ•˜์˜€๋‹ค. 5~7์ผ์ฐจ์—๋Š” ํ”„๋ก ํŠธ์™€ ๋ฐฑ์—”๋“œ์— ์—ฐ๊ฒฐ์— ์ง‘์ค‘ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค. Node.js์˜ ์งง์€ ์ดํ•ด์™€ ์งง์€ ์‹œ๊ฐ„๋™์•ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๊ธฐ์— ์™„์„ฑ๋„๋Š” ๋–จ์–ด์ง€์ง€๋งŒ, ๋ชฉํ‘œํ•˜๋Š” ๊ธฐ๋Šฅ๊ตฌํ˜„์€ ์™„์„ฑํ•˜์˜€๋‹ค. 

 

โ–ถ DB์ €์žฅ์‹œ, ๊ฐ ํฌ์ŠคํŒ…์— ๋Œ€ํ•ด์„œ postsid๋ฅผ ์ง€์ •ํ–ˆ๋Š”๋ฐ, 1๊ฐœ ์ดํ›„๋กœ postsid ์ค‘๋ณต๊ด€๋ จ ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ ์ €์žฅ๋˜์ง€ ์•Š์•˜๋‹ค.

postsid๋ฅผ ์ž‘์„ฑ๋‚ ์งœ์— ์—ฐ๊ด€ํ•ด์„œ ๋„˜๋ฒ„๋ง ํ•ด์ฃผ๋‹ˆ ๋ฌธ์ œ์—†์ด ์ €์žฅ๋จ

 

โ–ถ MongoDB๋ฅผ ์ด์šฉํ–ˆ์„๋•Œ์™€ ๋‹ค๋ฅด๊ฒŒ Mongoose๋Š” ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์—†์–ด๋„ Robo3T์—์„œ DB๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.  ํ•˜์ง€๋งŒ, ๋„๋ฉ”์ธ๊ณผ ์—ฐ๊ฒฐ ํ›„ Robo3T์— ์ €์žฅ๋œ ๋‚ด์šฉ๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๊ณ  ์ž์ฒด DB๋ฅผ ๋งŒ๋“ค์–ด ์‹คํ–‰๋˜์—ˆ๋‹ค. ์–ด๋””์— ์ €์žฅ๋˜๊ณ  ์žˆ๋Š”์ง€ ์•„์ง๋„ ์˜๋ฌธ์ด ๋“ ๋‹ค. DB๋‚ด์šฉ ์กฐํšŒ๋‚˜ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋ถˆํŽธํ•  ๊ฒƒ๊ฐ™์•„ ํ”„๋กœ์ ํŠธ ๋งˆ์ง€๋ง‰๋‚  ์†Œ์œ ํ•˜๊ณ ์žˆ๋Š” MongoDB๋กœ ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•˜์˜€์Œ.

→ ๋„๋ฉ”์ธ์— ์—ฐ๊ฒฐ๋œ ์ž์ฒด DB๋Š” ๊ป๋‹ค ์ผœ๋„ ๊ฐ™์€ DB์— ์—ฐ๊ฒฐ๋˜์–ด์„œ ์•„์ง๋„ ์‚ฌ์šฉํ•ด๋„๋˜๋Š”์ง€ ์˜๋ฌธ์ด ๋“ฆ.

ํ•ด๋‹น๋ถ€๋ถ„์€ ์ถ”ํ›„ ์Šคํ„ฐ๋””๊ฐ€ ํ•„์š”ํ•จ.

 

โ–ถ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ €์žฅ์‹œ, ์•”ํ˜ธํ™”์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ค์› ๋‹ค.

→ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์‹œ ์•”ํ˜ธํ™” ์ฒ˜๋ฆฌ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•จ. ํ•˜์ง€๋งŒ, ์‚ญ์ œ ๋ฐ ์ˆ˜์ •ํŽ˜์ด์ง€์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์‹œ ์ž‘์„ฑ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™” ์‹œํ‚จ๊ฒƒ๊ณผ ์ €์žฅ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋น„๊ตํ–ˆ์„๋•Œ ๊ฐ™์€ ๊ฐ’์ด ์•„๋‹˜. ๋˜ํ•œ, ์•”ํ˜ธํ™” ์ฒ˜๋ฆฌ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ '$'์™€ ๊ฐ™์€ ๊ธฐํ˜ธ๊ฐ€ ์žˆ์–ด Schema์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” 'String' ์ง€์ •๋œ ์ƒํƒœ์™€ ๋‹ฌ๋ผ์„œ ์˜ค๋ฅ˜๋ฅผ ๋ƒ„. ๋˜ํ•œ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ด ์—†์–ด์„œ ์ถ”ํ›„ ๋‹ค์‹œ ๋„์ „ํ•  ์˜ˆ์ •์ž„.

 

 

+ Recent posts