[CouchDB] Document
์ด์ ํฌ์คํธ
https://blog.naver.com/sssang97/223470176658
CouchDB์์ Document๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ด๊ฐ๋ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ ํ์ ๋ปํ๋ค.
์ฌ๊ธฐ์๋ Document๋ฅผ CRUDํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ๋ค๋ง์ ์ ๋ฆฌํด๋ณธ๋ค.
์ ์ฒด ๋ฐ์ดํฐ ์กฐํ
_all_docs๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๋ํ๋จผํธ๋ฅผ ์กฐํํ ์ ์๋ค.
curl -X GET http://admin:q1w2e3r4@127.0.0.1:5984/users/_all_docs
์์ง์ ์๋ค.
์ด๋ฌํ list api๋ ๊ฐ ๋ฆฌ์คํธ์ id๋ง ์ฃผ๋ ํ์์ด๋ผ์, ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ค๋ฉด ๋ณ๋ API๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๊ทธ๊ฑด ์๋์์ ๋ค๋ฃฌ๋ค.
๋ฐ์ดํฐ ์ฝ์
POST API๋ฅผ ์ฌ์ฉํด์ json ๋ฐ์ดํฐ๋ฅผ body๋ก ๋๊ธฐ๋ฉด ์ฝ์
์ด ๋๋ค.
์ด๋ฐ ์์ด๋ค.
curl -X POST -H "Content-Type: application/json" -d '{"name":"John Doe","age":30}' http://admin:q1w2e3r4@127.0.0.1:5984/users
curl -X POST -H "Content-Type: application/json" -d '{"name":"Tom","age":-444, "foo":"bar"}' http://admin:q1w2e3r4@127.0.0.1:5984/users
๊ทธ๋ผ ์ถ๊ฐ๋ ๊ฒ์ ๋ฆฌ์คํธ๋ก ํ์ธํ ์ ์์ง๋ง, ์๊น ์ค๋ช
ํ๋ฏ์ด ๋ฐ์ดํฐ๊ฐ ๋ณด์ด์ง๋ ์๋๋ค.
PUT API๋ฅผ ์ฌ์ฉํด์๋ ์ฝ์ ์ ํ ์ ์๋๋ฐ, ๊ทธ๊ฑด id๋ฅผ ์ง์ ํ ๋นํด์ ์ฐ๊ณ ์ถ์๋ ์ฐ๋ ๋ฐฉ๋ฒ์ด๋ค. path์ ์ํ๋ id๋ฅผ ๋ฃ์ผ๋ฉด ๋๋ค.
๋ฐ์ดํฐ ์์ธ์กฐํ
์ค์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ค๋ฉด ๊ฐ ๋ฐ์ดํฐ์ id๋ฅผ ๊ฐ์ ธ๋ค๊ฐ GET API๋ฅผ ์ด์ผ ํ๋ค.
curl -X GET http://admin:q1w2e3r4@127.0.0.1:5984/users/์์ด๋

๊ทธ๋ผ ์ด๋ ๊ฒ ์ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ค.
๋ฐ์ดํฐ์ ์์
์์ ์ PUT API๋ฅผ ํตํด ์ฒ๋ฆฌํ ์ ์๋ค. ์ฌ๊ธฐ๋ถํฐ ์ข ๋ฒ์ก์ค๋ฌ์์ง๋ค.

์์ ํ ๋๋, ๊ฐ ์์ฒด์ id์ ๋๋ถ์ด์ ๊ฐ์ฅ ์ต๊ทผ ์์ ๋ด์ญ์ธ _rev ์ ๋ณด๊น์ง ์ค์ผ ํ๋ค. ๋๊ด์ ๋ฝ์ผ๋ก ๋์ ์ ์ด๋ฅผ ํ๊ธฐ ์ํ ์๋จ์ด๋ค.
curl -X PUT -H "Content-Type: application/json" -d '{"_rev":"1-3341f3f62d6207dd706f52302a0df182","name":"Sohn Doe","age":30}' http://admin:q1w2e3r4@127.0.0.1:5984/users/17b9028ed468102e8d3593c9b9000a3d
์ด๋ฐ ์์ผ๋ก ์์ ํ ๊ฐ json ์์ rev๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ๊ฐ์ด ์์ ๋๊ณ , ๊ธฐ์กด rev๋ ๊ฐฑ์ ๋ ๊ฒ์ด๋ค. 1-์ด๋ 2- ๊ฐ์ ์์๋ฆฌ ์ซ์๋ ์์ ๋ ํ์๋ฅผ ๋ปํ๋ค.
๋ฐ์ดํฐ์ ์ญ์
๋ฐ์ดํฐ์ ์ญ์ ๋ DELETE API๋ฅผ ํตํด ์ฒ๋ฆฌํ ์ ์๋ค.
์ด๊ฒ๋ ์์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก rev๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค.
curl -X DELETE "http://admin:q1w2e3r4@127.0.0.1:5984/users/17b9028ed468102e8d3593c9b9000a3d?rev=2-6425a2fc401007d2c5109c5bffbb78e7"
๊ทธ๋ผ ์ญ์ ๊ฐ ์ ๋ ๊ฒ์ด๋ค.