[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"

๊ทธ๋Ÿผ ์‚ญ์ œ๊ฐ€ ์ž˜ ๋  ๊ฒƒ์ด๋‹ค.