couchdb day nyc 2017: json documents
TRANSCRIPT
![Page 1: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/1.jpg)
Lab: JSON Documents (30 minutes)
Bradley Holt, Developer Advocate
Thursday, February 9, 2017
CouchDB Developer Day
@BradleyHolt
![Page 2: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/2.jpg)
JSON Documents
{
_id: "6EF9D2B0-13D3-1378-8D30-39E3CE0B36C2",
_rev: "1-0b457efcf82fb29492ef927ba5b6ee15",
type: "Feature",
geometry: {
type: "Point",
coordinates: [
-71.1028,
42.3691
]
},
properties: {
session_id: "3486b13f-7b8a-8a96-dfbf-9b82800e367f",
timestamp: 1422928591717
}
}
@BradleyHolt
![Page 3: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/3.jpg)
http-console
$ npm install http-console -g
@BradleyHolthttps://github.com/cloudhead/http-console
![Page 4: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/4.jpg)
http-console
$ npm install http-console -g
$ http-console 127.0.0.1:5984
@BradleyHolthttps://github.com/cloudhead/http-console
![Page 5: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/5.jpg)
http-console
$ npm install http-console -g
$ http-console 127.0.0.1:5984
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to 127.0.0.1 on port 5984.
@BradleyHolthttps://github.com/cloudhead/http-console
![Page 7: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/7.jpg)
Connecting to CouchDB 2.0
$ http-console root:[email protected]:5984 --json
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to 127.0.0.1 on port 5984.
@BradleyHolt
![Page 8: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/8.jpg)
Connecting to IBM Cloudant
$ http-console https://bradley-holt:[email protected] --json
@BradleyHolt
![Page 9: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/9.jpg)
Connecting to IBM Cloudant
$ http-console https://bradley-holt:[email protected] --json
> http-console 0.6.3
> Welcome, enter .help if you're lost.
> Connecting to bradley-holt.cloudant.com on port 443.
@BradleyHolt
![Page 10: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/10.jpg)
PUT a Database
/>
@BradleyHolt
![Page 11: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/11.jpg)
PUT a Database
/> PUT /kittens
@BradleyHolt
![Page 12: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/12.jpg)
PUT a Database
/> PUT /kittens
...
@BradleyHolt
![Page 13: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/13.jpg)
PUT a Database
/> PUT /kittens
...
HTTP/1.1 201 Created
Content-Type: application/json
Location: http://127.0.0.1/kittens
{ ok: true }
@BradleyHolt
![Page 14: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/14.jpg)
POST a Document
/>
@BradleyHolt
![Page 15: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/15.jpg)
POST a Document
/> /kittens
@BradleyHolt
![Page 16: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/16.jpg)
POST a Document
/kittens>
@BradleyHolt
![Page 17: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/17.jpg)
POST a Document
/kittens> POST /
@BradleyHolt
![Page 18: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/18.jpg)
POST a Document
/kittens> POST /
...
@BradleyHolt
![Page 19: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/19.jpg)
POST a Document
/kittens> POST /
... { "_id": "mittens", "age_weeks": 10, "weight_kilograms": 0.997 }
@BradleyHolt
![Page 20: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/20.jpg)
POST a Document
/kittens> POST /
... { "_id": "mittens", "age_weeks": 10, "weight_kilograms": 0.997 }
HTTP/1.1 201 Created
Content-Type: application/json
Location: http://127.0.0.1/kittens/mittens
{
ok: true,
id: 'mittens',
rev: '1-e665a40d9ea9711c983e907f0b0b6e8a'
}
@BradleyHolt
![Page 21: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/21.jpg)
GET All Documents
/kittens>
@BradleyHolt
![Page 22: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/22.jpg)
GET All Documents
/kittens> GET /_all_docs
@BradleyHolt
![Page 23: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/23.jpg)
GET All Documents
/kittens> GET /_all_docs
HTTP/1.1 200 OK
Content-Type: application/json
Etag: "92afa0f309a9fd9f140cd31ff5000b5c"
{
total_rows: 1,
offset: 0,
rows: [
{
id: 'mittens',
key: 'mittens',
value: { rev: '1-e665a40d9ea9711c983e907f0b0b6e8a' }
}
]
}@BradleyHolt
![Page 24: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/24.jpg)
GET a Document
/kittens>
@BradleyHolt
![Page 25: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/25.jpg)
GET a Document
/kittens> GET /mittens
@BradleyHolt
![Page 26: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/26.jpg)
GET a Document
/kittens> GET /mittens
HTTP/1.1 200 OK
Content-Type: application/json
Etag: "1-e665a40d9ea9711c983e907f0b0b6e8a"
{
_id: 'mittens',
_rev: '1-e665a40d9ea9711c983e907f0b0b6e8a',
age_weeks: 10,
weight_kilograms: 0.997
}
@BradleyHolt
![Page 27: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/27.jpg)
PUT an Attachment
/kittens>
@BradleyHolt
![Page 28: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/28.jpg)
PUT an Attachment
/kittens> .headers
@BradleyHolt
![Page 29: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/29.jpg)
PUT an Attachment
/kittens> .headers
Accept: application/json
Content-Type: application/json
Authorization: Basic cm9vdDorMi95N3Y2aA==
Host: 127.0.0.1
@BradleyHolt
![Page 30: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/30.jpg)
PUT an Attachment
/kittens> .headers
Accept: application/json
Content-Type: application/json
Authorization: Basic cm9vdDorMi95N3Y2aA==
Host: 127.0.0.1
/kittens> Content-Type: image/gif
@BradleyHolt
![Page 31: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/31.jpg)
PUT an Attachment
/kittens>
@BradleyHolt
![Page 32: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/32.jpg)
PUT an Attachment
/kittens> PUT /mittens/photo?rev=1-e665a40d9ea9711c983e907f0b0b6e8a
@BradleyHolt
![Page 33: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/33.jpg)
PUT an Attachment
/kittens> PUT /mittens/photo?rev=1-e665a40d9ea9711c983e907f0b0b6e8a
...
@BradleyHolt
![Page 34: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/34.jpg)
PUT an Attachment
/kittens> PUT /mittens/photo?rev=1-e665a40d9ea9711c983e907f0b0b6e8a
... R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=
@BradleyHolt
![Page 35: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/35.jpg)
PUT an Attachment
/kittens> PUT /mittens/photo?rev=1-e665a40d9ea9711c983e907f0b0b6e8a
... R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=
HTTP/1.1 201 Created
Content-Type: application/json
Location: http://127.0.0.1/kittens/mittens/photo
{
ok: true,
id: 'mittens',
rev: '2-d858e51453a5785bafe517b7eddc5a98'
}
@BradleyHolt
![Page 36: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/36.jpg)
PUT an Attachment
/kittens> PUT /mittens/photo?rev=1-e665a40d9ea9711c983e907f0b0b6e8a
... R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=
HTTP/1.1 201 Created
Content-Type: application/json
Location: http://127.0.0.1/kittens/mittens/photo
{
ok: true,
id: 'mittens',
rev: '2-d858e51453a5785bafe517b7eddc5a98'
}
/kittens>
@BradleyHolt
![Page 37: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/37.jpg)
PUT an Attachment
/kittens> PUT /mittens/photo?rev=1-e665a40d9ea9711c983e907f0b0b6e8a
... R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=
HTTP/1.1 201 Created
Content-Type: application/json
Location: http://127.0.0.1/kittens/mittens/photo
{
ok: true,
id: 'mittens',
rev: '2-d858e51453a5785bafe517b7eddc5a98'
}
/kittens> Content-Type: application/json
@BradleyHolt
![Page 38: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/38.jpg)
GET an Attachment
/kittens>
@BradleyHolt
![Page 39: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/39.jpg)
GET an Attachment
/kittens> GET /mittens/photo
@BradleyHolt
![Page 40: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/40.jpg)
GET an Attachment
/kittens> GET /mittens/photo
HTTP/1.1 200 OK
Content-Type: image/gif
Etag: "UsqjdPnY6ApD2ENFOglFHg=="
R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=
@BradleyHolt
![Page 41: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/41.jpg)
Conditional Caching
/kittens>
@BradleyHolt
![Page 42: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/42.jpg)
Conditional Caching
/kittens> If-None-Match: "UsqjdPnY6ApD2ENFOglFHg=="
@BradleyHolt
![Page 43: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/43.jpg)
Conditional Caching
/kittens> If-None-Match: "UsqjdPnY6ApD2ENFOglFHg=="
/kittens>
@BradleyHolt
![Page 44: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/44.jpg)
Conditional Caching
/kittens> If-None-Match: "UsqjdPnY6ApD2ENFOglFHg=="
/kittens> GET /mittens/photo
@BradleyHolt
![Page 45: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/45.jpg)
Conditional Caching
/kittens> If-None-Match: "UsqjdPnY6ApD2ENFOglFHg=="
/kittens> GET /mittens/photo
HTTP/1.1 304 Not Modified
@BradleyHolt
![Page 46: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/46.jpg)
Conditional Caching
/kittens> If-None-Match: "UsqjdPnY6ApD2ENFOglFHg=="
/kittens> GET /mittens/photo
HTTP/1.1 304 Not Modified
/kittens>
@BradleyHolt
![Page 47: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/47.jpg)
Conditional Caching
/kittens> If-None-Match: "UsqjdPnY6ApD2ENFOglFHg=="
/kittens> GET /mittens/photo
HTTP/1.1 304 Not Modified
/kittens> If-None-Match:
@BradleyHolt
![Page 48: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/48.jpg)
DELETE a Document
/kittens>
@BradleyHolt
![Page 49: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/49.jpg)
DELETE a Document
/kittens> DELETE /mittens
@BradleyHolt
![Page 50: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/50.jpg)
DELETE a Document
/kittens> DELETE /mittens
HTTP/1.1 409 Conflict
Content-Type: application/json
{ error: 'conflict', reason: 'Document update conflict.' }
@BradleyHolt
![Page 51: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/51.jpg)
DELETE a Document
/kittens>
@BradleyHolt
![Page 52: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/52.jpg)
DELETE a Document
/kittens> HEAD /mittens
@BradleyHolt
![Page 53: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/53.jpg)
DELETE a Document
/kittens> HEAD /mittens
HTTP/1.1 200 OK
Etag: "2-d858e51453a5785bafe517b7eddc5a98"
@BradleyHolt
![Page 54: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/54.jpg)
DELETE a Document
/kittens>
@BradleyHolt
![Page 55: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/55.jpg)
DELETE a Document
/kittens> If-Match: "2-d858e51453a5785bafe517b7eddc5a98"
@BradleyHolt
![Page 56: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/56.jpg)
DELETE a Document
/kittens> If-Match: "2-d858e51453a5785bafe517b7eddc5a98"
/kittens>
@BradleyHolt
![Page 57: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/57.jpg)
DELETE a Document
/kittens> If-Match: "2-d858e51453a5785bafe517b7eddc5a98"
/kittens> DELETE /mittens
@BradleyHolt
![Page 58: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/58.jpg)
DELETE a Document
/kittens> If-Match: "2-d858e51453a5785bafe517b7eddc5a98"
/kittens> DELETE /mittens
HTTP/1.1 200 OK
Content-Type: application/json
{
ok: true,
id: 'mittens',
rev: '3-d0780627ddff7a7f536fe273100cec41'
}
@BradleyHolt
![Page 59: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/59.jpg)
DELETE a Document
/kittens> If-Match: "2-d858e51453a5785bafe517b7eddc5a98"
/kittens> DELETE /mittens
HTTP/1.1 200 OK
Content-Type: application/json
{
ok: true,
id: 'mittens',
rev: '3-d0780627ddff7a7f536fe273100cec41'
}
/kittens>
@BradleyHolt
![Page 60: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/60.jpg)
DELETE a Document
/kittens> If-Match: "2-d858e51453a5785bafe517b7eddc5a98"
/kittens> DELETE /mittens
HTTP/1.1 200 OK
Content-Type: application/json
{
ok: true,
id: 'mittens',
rev: '3-d0780627ddff7a7f536fe273100cec41'
}
/kittens> If-Match:
@BradleyHolt
![Page 61: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/61.jpg)
Delete the Database
/>
@BradleyHolt
![Page 62: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/62.jpg)
Delete the Database
/> DELETE /kittens
@BradleyHolt
![Page 63: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/63.jpg)
Delete the Database
/> DELETE /kittens
HTTP/1.1 200 OK
Content-Type: application/json
{ ok: true }
@BradleyHolt
![Page 64: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/64.jpg)
Try It On Your Own
1. Create a database
2. Create a document in the database
3. Read the document
4. Update the document
5. Delete the document
6. Delete the database
@BradleyHolt
![Page 65: CouchDB Day NYC 2017: JSON Documents](https://reader031.vdocument.in/reader031/viewer/2022022419/58b897cc1a28ab3e3a8b6f47/html5/thumbnails/65.jpg)
Lab: JSON Documents
CouchDB Developer Day
@BradleyHolt