์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- NEXT
- ํจ์
- wil
- ๊ฐ๋ฐ์
- JavaScript
- native
- react
- rn
- ๋ถํธ์บ ํ
- ๋ด์ผ๋ฐฐ์
- K-Digital
- ๋ฆฌ์กํธ
- ์๊ณ ๋ฆฌ์ฆ
- ํ์
- ํ์ค
- trainning
- ์ฝ๋ฉ
- ๋ณ์
- ํ๋ก ํธ์๋
- API
- PROJECT
- ์จ๋ผ์ธ
- ์๋ฌ
- JS
- ๋ด์ผ๋ฐฐ์์บ ํ
- Redux
- ์๋ฐ์คํฌ๋ฆฝํธ
- Firebase
- type
- ํ๋ก์ ํธ
- Today
- Total
Frontend ๊ฐ๋ฐ์ - hyo.loui
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ - CRUD: Update API (updateDoc( ) ํ์ฉํ๊ธฐ) ๋ณธ๋ฌธ
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ - CRUD: Update API (updateDoc( ) ํ์ฉํ๊ธฐ)
hyo.loui 2023. 1. 3. 15:39๐ฏ๋ชฉ์ :
CRUD : Update API ์์ฑ , Firebase : FireStore data ์ ๋ฐ์ดํธ
๐คข ์ค๋ฅ ํด๊ฒฐ :
- WARN Possible Unhandled Promise Rejection :
TypeError: _n7.indexOf is not a function.
1. setDone (์ฒดํฌ์์ด์ฝ)
์ฒดํฌ ์์ด์ฝ์ ๋๋ฅด๋ฉด ํจ์๊ฐ ์คํ๋์ด ํด๋นํ๋ todo์ isDone ์์ฑ์ ํ ๊ธ๋ก ๋ณ๊ฒฝํ๊ณ ,
isDone์ด true ๋ผ๋ฉด ์๋ฃํ๋ค๋ ํจ๊ณผ(text-decoration: line-through)๋ฅผ ์ฃผ์

์์ด์ฝ ํด๋ฆญ ์ ์คํ๋๋ ํจ์์ด๊ณ ,
์๋ฒํต์ ์ ํ๋ ๋ถ๋ถ์ด๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํด์คฌ๋ค.
๋ ํ์ฌ ๊ฐ์ง๊ณ ์๋ todos์ isDone์ ํ ๊ธํด์ผ ํ๊ธฐ ๋๋ฌธ์
find ๋ผ๋ ๋ณ์๋ก ์ง๊ธ ๊ฐ์ง isDone๊ณผ ๋ฐ๋๋ก ๊ณ์ ๋ฐ๊ฟ์ฃผ์๋ค

์คํ์ผ์ ์ด๋ ๊ฒ 3ํญ ์ฐ์ฐ์๋ก isDone์ด true๋ผ๋ฉด ์ญ์ ์ ๊ธ๊ณ ,
false ๋ผ๋ฉด ์๋ฌด๊ฒ๋ ํ์ง ์๋๋ก ํด์ฃผ์๋ค
ํ์ง๋ง ํ ์คํธ๊ณผ์ ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค
์๋ ํด๊ฒฐ๊ณผ์ ์ด ์์ผ๋ ์ฐธ๊ณ ํ์!
update์ ํต์ฌ ๊ธฐ๋ฅ์ธ ๋ฐ์ดํฐ์ text๋ฅผ update ํด ๋ณด์
์ฐ์ ๊ธฐ๋ฅ์ 2๊ฐ๋ก ๋๋์๋ค
- ์์ ์์ด์ฝ ํด๋ฆญ์ setEdit( ) , Text ํ๊ทธ๋ฅผ textInput ํ๊ทธ๋ก ๋ณ๊ฒฝ
- textInput์์ ์ํฐ(onSubmitEditing)๋๋ฉด updateDoc()
2-1. setEdit

์์ด์ฝ ํด๋ฆญํ์ ๋ ์คํํ๋ ํจ์์ด๋ค
์ด๊ฒ๋ ์ญ์ ์๋ฒํต์ ์ผ๋ก updateDoc()์ด ๋๊ธฐ ๋๋ฌธ์
๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ,
์์์๋ setDone ํจ์์ ๋๊ฐ๋ค

์ด ํ todo์ isEdit ์ํ์ ๋ฐ๋ผ ์ผํญ์ฐ์ฐ์๋ก
textInput์ด ๋ ๊ฒ์ธ์ง, text๊ฐ ๋ ๊ฒ์ธ์ง ๋๋์๋ค
2-2. onSubmitEditing

์์ ๋ง๋ค์ด์ค <TextInput/> ํ๊ทธ์์
์ฌ์ฉํ ์คํ ์ดํธ๋ฅผ ํ๋ ๋ง๋ค์ด์ค์ผํ๋ค

- ์ ์คํ ์ดํธ์์ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ onChangeTextํ์ฌ ๊ณ์ ๋ฐ๊ฟ์ฃผ๊ธฐ ์ํด setState
- ์ํฐ, ์ฆ submit์ด ๋๋ฉด ์คํ์ํฌ ํจ์๋ฅผ ์ถ๊ฐํด ์ฃผ๊ณ ํ๋ผ๋ฏธํฐ๋ก todo์ id๋ฅผ ๋๊ฒจ์ค๋ค

update API ์์ญ์ submit์ด ๋๋ฉด ์คํ ๋ ํจ์๋ ์ถ๊ฐํด ์ค๋ค
๋ก์ง์ ์์์ ํ๋ update์ ๊ฐ๋ค
๋ค๋ฉด id๊ฐ ๊ฐ์ง๊ณ ์๋ text๋ฅผ ๋ฐฉ๊ธ ์ ๋ง๋ค์ด์ค editText๋ก ๋ฐ๊ฟ์ฃผ๊ณ ,
์ด๋ ค์๋ TextInput์ ๋ซ์์ฃผ๊ธฐ ์ํด false๋ก ๋ณ๊ฒฝํด ์ฃผ๋ฉด ๋ง๋ฌด๋ฆฌ๊ฐ ๋๋ค!
3. ๊ฒฐ๊ณผ ํ๋ฉด
+ ์ค๋ฅ ํด๊ฒฐ :
ํ์ด์ด๋ฒ ์ด์ค updateDoc, getDoc, onSnapShot API ์ค ์๋ฌ
WARN Possible Unhandled Promise Rejection

check ์์ด์ฝ์ ํด๋ฆญํ๋ฉด todo์ isDone์ ๋ฐ๊ฟ์ฃผ๋ ํจ์์์ ์ค๋ฅ๊ฐ ๋ฌ๋ค
์ ์ฝ์ด๋ณด๋ index error ๋ผ๊ณ ํ๋ ๊ฒ ๊ฐ์์
๊ทธ ์ ์๋ id๋ฅผ ์์ฑ์ผ๋ก ๋ฃ์ด์คฌ๋๋ฐ,
firebase์์ ์๋์ ์ผ๋ก id๊ฐ ์์ฑ์ด ๋๋ฏ๋ก
์ฐ๋ฆฌ๊ฐ ๋ฐ๋ก ์ถ๊ฐ ํ ํ์๋ ์์ด์
NewTodo ์์ ์ง์์คฌ๋๊ฒ ์๊ฐ์ด ๋ฌ๋ค
์ถ๋ก :
edit ์ ๋์์ง๋ง db๋ฅผ ์ฝ์ด์ฌ ๋์ index ๋ด์ฉ์ด ์๋ก ๋ค๋ฅด๋ค!
ํด๊ฒฐ:
์ฐ์ ๋๋ฃ๋ค์ ๊ฒฝ์ฐ๋ฅผ ๋ณด๋ฉด ์คํ์ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ๋ง์๊ณ ,
๋๋ FireStore์ ์๋ ์ปฌ๋ ์
๋ชจ๋ ์ญ์ ๋ฅผ ํ๋ค
์ด๋ ๊ฒ ๊ฐ๋จํ ํด๊ฒฐ๋์๋ค
๋๋์ ์, ์ด๋ ต๊ฒ ์๊ฐํ์ง ๋ง๊ณ ์๋ฌ๋ฅผ ์ ์ฝ์ด๋ณด๋ฉด ํํธ๊ฐ ๋ฐ๋์ ์๋ค!
์ต์ข ์ ๋ฆฌ
- findIndex : ๋ฐฐ์ด ๋ฉ์๋๋ก ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์์ค๋๋ฐ ์์ฃผ ๊ฐํธํ ๋ฉ์๋
- RN ์์๋ onSubmit >> onSubmitEditing ์ผ๋ก ์ฌ์ฉ
- firebase ์ฌ์ฉ์ updateDoc( ) ํจ์๋ก ๊ฐํธํ๊ฒ ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ๋ค
- state๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์ํ๋ฅผ ํ์ธํ๊ณ ์ผํญ์ฐ์ฐ์๋ก Text, TextInput์ ๋ณด์ฌ์ฃผ๋ฉด ๊ฐํธํ๊ฒ
ํ ๊ธ ์ ๋ ๋๋ง๋จ๊ณผ ๋์์ UI๋ฅผ ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค - firebase ์ฌ์ฉ ์ index is not a function ์๋ฌ๋
์คํ, ๋ฐ์ดํฐ๊ฐ key ํต์ผ์ด ์๋ ๊ฒฝ์ฐ์ด๊ฑฐ๋ type์ด ๋ง์ง ์์์ ์๊ธฐ๋ ์ค๋ฅ์ด๋ค