Search

QnA & Comment

์ƒ์„ฑ์ผ
2023/09/17 11:30
ํƒœ๊ทธ

๋‹ด๋‹น ๋„๋ฉ”์ธ

Notice :ย ์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์€ ์šฐ๋ฆฌ ์›น์‚ฌ์ดํŠธ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
์šฐ๋ฆฌ ์›น์‚ฌ์ดํŠธ์˜ ํšŒ์› ์‚ฌ์šฉ์ž๋“ค์€ ์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์„ ํ†ตํ•ด ๊ธฐ๋ถ€์— ๊ด€๋ จ๋œ ์งˆ๋ฌธ ์‚ฌํ•ญ, ๊ธฐ๋ถ€๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•œ ์งˆ๋ฌธ ์‚ฌํ•ญ ๋“ฑ์˜ ๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋Œ“๊ธ€๋กœ ํšŒ์›๊ฐ„์˜ ์†Œํ†ต์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ๋ถ€ ๋ชฉ์ฐจ

๋ชฉ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
โ€ข
#1. ๊ตฌํ˜„ ๊ณ„ํš
โ€ข
#2. ๊ธฐ๋Šฅ ์‹œ์—ฐ
โ€ข
#3. ๊ตฌํ˜„ ์ค‘์— ๋ฐœ์ƒํ•œ ์ด์Šˆ
โ€ข
#4. ์ด์Šˆ ํ•ด๊ฒฐ
โ€ข
#5. ๊ตฌํ˜„ ์™„๋ฃŒ ์ดํ›„ ๋””๋ฒ„๊น…
โ€ข
#6. ํ•ด๊ฒฐ ํ•ด์•ผ ํ•  ๋‚จ์€ ๋ฌธ์ œ

#1. ๊ตฌํ˜„ ๊ณ„ํš

์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์˜ ํ•ต์‹ฌ :
โ€ข
์˜ค์ง ํšŒ์›๋งŒ ๊ฒŒ์‹œ๊ธ€์„ ๋“ฑ๋ก, ์ฝ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ณธ์ธ์˜ ๊ธ€๋งŒ ์ˆ˜์ •, ์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
์˜ค์ง ํšŒ์›๋งŒ ๋Œ“๊ธ€ ๋“ฑ๋ก์„ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ณธ์ธ์˜ ๋Œ“๊ธ€๋งŒ ์ˆ˜์ •, ์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด์œ  : ์ฃผ๋กœ ์ฑ…์„ ๊ธฐ๋ถ€ ํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๊ณผ ์ฑ…์„ ๊ธฐ๋ถ€ ๋ฐ›๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋งŒ ์ €ํฌ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉ ํ•  ๊ฒƒ์ด๋ผ ์˜ˆ์ƒ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๋น„ํšŒ์›์ด ๊ฒŒ์‹œํŒ์„ ์–ด์ง€๋Ÿฝํžˆ๋Š” ์ผ์„ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ํšŒ์›๋งŒ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
โ€ข
์ด๋ฅผ ์œ„ํ•ด ํšŒ์›์ด ์•„๋‹ˆ๋ฉด ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ & ๊ฒŒ์‹œ๊ธ€ ์ฝ๊ธฐ ์‹œ ๋กœ๊ทธ์ธ์„ ๋จผ์ € ๊ถŒ์œ ํ•˜๋Š” ๋กœ์ง์„ ์งœ๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

#2. ๊ธฐ๋Šฅ ์‹œ์—ฐ

์ด์ œ ์›น์‚ฌ์ดํŠธ์— ์ง์ ‘ ์ ‘์†ํ•˜์—ฌ ์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ๋“ค์„ ์‹œ์—ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์‹œ์—ฐ ์ˆœ์„œ)
๋น„ํšŒ์› ์ƒํƒœ๋กœ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ โ†’ ๋กœ๊ทธ์ธ ํ™”๋ฉด โ†’ ๋กœ๊ทธ์ธ ํ›„ ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก ๋ฐ ์ˆ˜์ •, ์‚ญ์ œ โ†’ ๋Œ“๊ธ€ ๋“ฑ๋ก ๋ฐ ์ˆ˜์ •, ์‚ญ์ œ

#3. ๊ตฌํ˜„ ์ค‘์— ๋ฐœ์ƒํ•œ ์ด์Šˆ

์ด์Šˆ #1 : vue-quill-editor ์‚ฌ์šฉ์‹œ imageFileList(formData)๊ฐ€ null์ธ ์‚ฌํ•ญ
์ด์Šˆ #2 : vue-quill-editor ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ์‹œ ๋ฌด์กฐ๊ฑด base64 ์ธ์ฝ”๋”ฉ์ด ๋˜๋Š” ์‚ฌํ•ญ
์ด์Šˆ #2 - ์ฐธ๊ณ  ์‚ฌ์ง„

#4. ์ด์Šˆ ํ•ด๊ฒฐ

ํ•ด๊ฒฐ :
๋จผ์ € ์„ ์ƒ๋‹˜์˜ ๋ง์”€๋Œ€๋กœ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ์‹œ ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
โ€ข
ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ๊ฒฝ๋กœ๊ฐ€ ์ด๋ฏธ์ง€ ์—”ํ‹ฐํ‹ฐ์— ๊ฒฝ๋กœ๋กœ์„œ ์ €์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค.
โ€ข
๋ฐฑ์œผ๋กœ ์ „๋‹ฌ ๋ฐ›์€ ์ด๋ฏธ์ง€๋Š” ์‹ค์ œ๋กœ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ์„œ ๋กœ์ปฌ์— ์ €์žฅ ๋˜์–ด์•ผ ํ•œ๋‹ค.
โ€ข
์ €์žฅ๋˜๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ์€ ํŒŒ์ผ๋ช…์ด ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ํ•ด์•ผํ•œ๋‹ค. (ex : UUID)
์œ„์˜ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ๊ตฌ์ƒํ•˜๊ณ , null์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ ์šฉ ํ–ˆ์Šต๋‹ˆ๋‹ค.
โ€ข
querySelectorAll์„ ์‚ฌ์šฉํ•˜์—ฌ quill-editor ๋‚ด์— ์กด์žฌํ•˜๋Š” <img> ํƒœ๊ทธ๋ฅผ ๊ฒ€์ƒ‰
โ€ข
ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ํŒŒ์ผ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ ํ›„, ๋ฐฑ์— ์ด๋ฏธ์ง€๋ฅผ ํŒŒ์ผ ๊ฐ์ฒด๋กœ์„œ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ
์‚ฌ์šฉ ๋˜์–ด์ง„ ์ฝ”๋“œ - ์ฐธ๊ณ  ์‚ฌ์ง„
์ด๋ ‡๊ฒŒ imageFileList๊ฐ€ null์ธ ์ด์Šˆ #1์„ ํ•ด๊ฒฐ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ formData ์ค‘ qnaInfo์˜ content์— ์ด๋ฏธ์ง€๊ฐ€ base64๋กœ ์ธ์ฝ”๋”ฉ ๋˜์–ด ์—ฌ์ „ํžˆ DB์— <p><img /></p>์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์œ„์™€ ๊ฐ™์€ ์ด์Šˆ #2๋ฅผ ํ•ด๊ฒฐ ํ•˜๊ณ ์ž ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ ์šฉ ํ–ˆ์Šต๋‹ˆ๋‹ค.
โ€ข
content์˜ <p><img /></p>๋ฅผ replaceAll๋กœ ์ œ๊ฑฐํ•œ๋‹ค.
์‚ฌ์šฉ ๋˜์–ด์ง„ ์ฝ”๋“œ - ์ฐธ๊ณ  ์‚ฌ์ง„
base64๋กœ ์ธ์ฝ”๋”ฉ ๋˜์–ด์ง„ ๊ฒƒ์„ ๋‹จ์ˆœํžˆ replace ํ›„ DB์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•œ ๊ฒƒ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์  ์—ฌ์œ ๊ฐ€ ์žˆ์„๋•Œ base64๋ฅผ ์กฐ๊ธˆ ๋” ๊ณต๋ถ€ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

#5. ๊ตฌํ˜„ ์™„๋ฃŒ ์ดํ›„ ๋””๋ฒ„๊น…

๋ฒ„๊ทธ :
โ€ข
์งˆ๋ฌธ ๊ฒŒ์‹œํŒ ๋“ฑ๋ก (QnARegisterView)์—์„œ, ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์ด ๋น„์–ด์žˆ์–ด๋„ ์ž‘์„ฑ์ด ๋˜๋Š” ๊ฒƒ
โ€ข
์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์„ URL๋กœ ๋ฌด๋‹จ ์•ก์„ธ์Šค ํ•  ์‹œ, ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ๋ณด์—ฌ์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ
๋””๋ฒ„๊ทธ :
โ€ข
์ฒซ๋ฒˆ์งธ
โ—ฆ
if๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ null์ผ ๊ฒฝ์šฐ alert โ€œ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”โ€๋ฅผ ์‹คํ–‰
โ€ข
๋‘๋ฒˆ์งธ
โ—ฆ
beforeEnter ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ๋จผ์ € ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์ •

#6. ํ•ด๊ฒฐ ํ•ด์•ผ ํ•  ๋‚จ์€ ๋ฌธ์ œ

ํ•ด๊ฒฐ ํ•ด์•ผ ํ•  ๋‚จ์€ ๋ฌธ์ œ (Additional Work and debug) :
โ€ข
๊ธ€ ์ˆ˜์ •(modify)์—์„œ beforeEnter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ ๋˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๊ตฌ์ƒ ํ–ˆ๋˜ ๊ฒƒ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๋‹จ ์•ก์„ธ์Šค์‹œ if(โ€™๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ๋‹‰๋„ค์ž„ === โ€˜ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์žโ€™)๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ
false์ผ ๊ฒฝ์šฐ no-acc-view ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒŒ ๋งŒ๋“ค ์ƒ๊ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
no-acc-view ์˜ˆ์‹œ
ํ”„๋กœ์ ํŠธ ๋งˆ๊ฐ์ด ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•„์„œ ์ผ๋‹จ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
โ€ข
์ด๋ฏธ์ง€ โ€˜1โ€™์ด ์ €์žฅ๋œ ๊ฒŒ์‹œ๋ฌผ์„ ์ด๋ฏธ์ง€ โ€˜2โ€™๋กœ ์ˆ˜์ • ์‹œ, DB์— ์ด๋ฏธ์ง€ โ€˜1โ€™์ด ์ง€์›Œ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๋Œ“๊ธ€์˜ ๋Œ€๋Œ“๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค.
โ€ข
์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์‹œ ํ˜น์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€์„ ์ฝ์„๋•Œ, ๋‚ด์šฉ์˜ ํฐํŠธ ํฌ๊ธฐ๊ฐ€ ์ž‘์Šต๋‹ˆ๋‹ค.
โ€ข
AWS S3 TEST ๋ฐ ๊ตฌํ˜„์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๊ฒŒ์‹œ๊ธ€์ด ๋“ฑ๋ก๋˜๋Š” ์ˆœ์„œ๋ฅผ ASC๋กœ ๋ณ€๊ฒฝ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก์‹œ ๊ฐ€๋” ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด์•ผ ๊ฒŒ์‹œ๊ธ€์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ˆ˜์ • ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก์‹œ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๊ทœ์น™์„ ์ง€ํ‚จ์ฑ„๋กœ ๋ณธ๋ฌธ์˜ ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•ด์„œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ์ด ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. (์บ๋Ÿฌ์…€ ์‚ญ์ œ) (ex : ๊ธ€, ์ด๋ฏธ์ง€, ๊ธ€ ์ด๋ฏธ์ง€)
โ€ข
๋ณธ๋ฌธ์˜ ๋ฌธ์ž์—ด์ด ์ขŒ์ธก ์ •๋ ฌ๋กœ ์ˆ˜์ • ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์ด๋ฏธ์ง€๊ฐ€ ์—†๋Š” ๊ฒŒ์‹œ๊ธ€์— ๋นˆ ์บ๋Ÿฌ์…€(empty carousel borderline)์„ ์ œ๊ฑฐ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.