๊ฐœ๋ฐœ๊ตฌ๋ฆฌ๐Ÿธ

๋…ธ๋“œ ํ•™์Šต 20์ผ์ฐจ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ์˜ค๋Š˜๋„ ์‹œํ€„๋ผ์ด์ฆˆ์™€ ๊ด€๋ จํ•ด ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์ด ์žˆ์–ด์„œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ์‹œํ€„๋ผ์ด์ฆˆ์—์„œ ๋ชจ๋ธ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋ฉด ์ƒ๊ธฐ๋Š” ํ•จ์ˆ˜๋Š” ๋‹จ์ˆ˜/๋ณต์ˆ˜์˜ ๊ด€๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฐ€? ํ’€์ด ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋กœ ํŒ”๋กœ์šฐ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ๋ฐฐ์šฐ๋Š” ์ค‘, ์•„๋ž˜์™€ ๊ฐ™์ด ๋ชจ๋ธ์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ ํ–ˆ์Šต๋‹ˆ๋‹ค. //์ƒ๋žต static associate(db){ ...

๋…ธ๋“œ ํ•™์Šต 19์ผ์ฐจ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ์˜ค๋Š˜์€ multer ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ์ œ์–ด๋ฅผ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. multer ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์‚ฌ์šฉํ•ด๋ณด๋ฉด์„œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ๋ถ„์„ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์˜ ๊ธ€์— ์ •๋ฆฌํ•ด๋ดค์Šต๋‹ˆ๋‹ค. multer ๋ฏธ๋“ค์›จ์–ด ์ •๋ฆฌ ์˜ค๋Š˜ ํ•™์Šต ์ค‘ ๊ณผ๊ฑฐ ์‹œํ€„๋ผ์ด์ฆˆ ๋ชจ๋ธ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋†“์น˜๊ณ  ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„์ด ์žˆ์–ด ๋‹ค์‹œ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ...

multer ๋ฏธ๋“ค์›จ์–ด ์ •๋ฆฌ

multer ๋ž€ node.js์—์„œ ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด multer ์„ค์น˜ npm i multer multer ์‚ฌ์šฉ multer ๋ฏธ๋“ค์›จ์–ด๋Š” ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œ ํ•˜๋Š” ๋ผ์šฐํ„ฐ์— ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. const express = require('express'); const multer = require('mu...

๊นƒํ—ˆ๋ธŒ ์•ก์…˜ ์•„ํ‹ฐํŒฉํŠธ ๋ฒ„์ „ ์—๋Ÿฌ ํ•ด๊ฒฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ๊นƒํ—ˆ๋ธŒ ์•ก์…˜์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ธฐ๋ก์„ ๋‚จ๊น๋‹ˆ๋‹ค. ์ตœ๊ทผ ์ปค๋ฐ‹์„ ํ•ด๋†“๊ณ  ๋ฌธ๋“ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. This request has been automatically failed because it uses a deprecated version of `actions/upload-artifact: v3`. Learn...

์˜ˆ์™ธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ณ ์ฐฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ์˜ค๋Š˜์€ ์ œ๊ฐ€ ์ผํ•˜๋ฉด์„œ ๊ณ ๋ฏผํ•˜๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ธฐ๋ก์„ ๋‚จ๊ฒจ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์— ๋” ๋‚˜์€ ํ•ด๋‹ต์„ ์ฐพ์€ ์ œ๊ฐ€ ๊ณผ๊ฑฐ์˜ ์ €๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ƒ๊ฐ์„ ๊ธฐ๋กํ•ด ๋†จ๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์™ธ์˜ ๊ตฌ์กฐ ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „๋žต ๋“ฑ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ธฐ์–ต์ด ์•ˆ๋‚˜๊ฑฐ๋‚˜ ์•Œ๊ณ ์žˆ๋”๋ผ๋„ ๊ธฐ...

๋…ธ๋“œ ํ•™์Šต 18์ผ์ฐจ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ์ด๋ฒˆ์—” passport ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ํ–ˆ๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ ๋‚˜์ค‘์— ๋‹ค์‹œ ๋ด๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋„ค์š” ํŠนํžˆ๋‚˜ ์ž๋ฐ”๋ฅผ ํ˜„์—…์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ์ €๋Š” ํ•จ์ˆ˜ ๋‚ด์— return ์—†์ด ๋ฏธ๋“ค์›จ์–ด ๋‚ด์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ˜ธ์ถœ๋ถ€๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™์€ ๋ถ€๋ถ„์ด ์ดํ•ด๊ฐ€ ์•ˆ๋˜์–ด์„œ ๋งŽ์ด ํ˜ผ๋™์ด ์™”์Šต๋‹ˆ๋‹ค. passport pa...

๋…ธ๋“œ ํ•™์Šต 17์ผ์ฐจ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ์˜ค๋Š˜์€ ์‹œํ€„๋ผ์ด์ฆˆ ๋ชจ๋ธ ์ƒ์„ฑ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ์ƒ์„ฑ ๋ชจ๋ธ์€ ์„ค์ •ํ•˜๊ธฐ ๋‚˜๋ฆ„์ด์ง€๋งŒ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. const Sequelize = require('sequelize'); class {๋ชจ๋ธ๋ช…} extends Sequelize.Model { static initiate(sequelize){ {๋ชจ๋ธ๋ช…}....

๋…ธ๋“œ ํ•™์Šต 16์ผ์ฐจ

์˜ค๋Š˜์€ Node.js์— MongoDB๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์—ฐ๊ฒฐํ•ด๋ดค์Šต๋‹ˆ๋‹ค. MongoDB ํ˜„์žฌ NoSQL ์ค‘ ๊ฐ€์žฅ ๋†’์€ ์ ์œ ์œจ์„ ์ฐจ์ง€ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž…๋‹ˆ๋‹ค. NoSQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ณด๋‹ค ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. SQL๊ณผ NoSQL ๋น„๊ต ย  SQL NoSQL ...

MongoDB ์„ค์น˜

๋ชฉ์ฐจ MongoDB ์„ค์น˜ MongoDB Shell ์„ค์น˜ MongoDB ์‹คํ–‰ MongoDB Shell ์‹คํ–‰ํ–‰ ๊ณ„์ • ์ƒ์„ฑ ๊ณ„์ • ๋กœ๊ทธ์ธ MongoDB ์„ค์น˜ https://www.mongodb.com/try/download/community ์œ„ ๋งํฌ์—์„œ OS์— ๋งž๋Š” ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œ ํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ๊ณผ์ • ์ค‘ MongoDB ...

๋…ธ๋“œ ํ•™์Šต 15์ผ์ฐจ

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿธ ๊ด€๊ณ„ ์ฟผ๋ฆฌ SQL์˜ JOIN์˜ ์—ญํ• ์„ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‹œํ€„๋ผ์ด์ฆˆ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. include ์‹œํ€„๋ผ์ด์ฆˆ์˜ ์กฐํšŒ ๊ธฐ๋Šฅ์— include ๋ฅผ ํ†ตํ•ด JOIN ๊ณผ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. const user = await User.findOne({ include:[ { ...

์ธ๊ธฐ ํƒœ๊ทธ