Bom, vamos usar o curl para fazer comunicação com
CouchDBi, assim você entende a prática sem códigos longos em linguagens. Estou tentando ser mais transparente possível.
Argvs do Curl
- -d : usaremos para comunicação com JavaScript Object Notation (JSON)
- -X : usaremos para comunicação HTTP para enviar GET, PUT, POST e DELETE.
- -v : isso é opcional caso queira ver os detalhes no modo de verbose
Comandos no banco
Criando banco chamado "contacts" e outro chamado "books":
curl -X PUT http://127.0.0.1:5984/contacts
$ curl -X PUT http://127.0.0.1:5984/books
Listando todos os bancos:
curl -X GET http://127.0.0.1:5984/_all_dbs
Apagar banco "books":
curl -X DELETE http://127.0.0.1:5984/books
Para pegar informações do banco:
curl -X GET http://127.0.0.1:5984/contacts
Comandos de documentos
Criando documentos no banco exemplo "johndoe":
curl -X PUT http://127.0.0.1:5984/contacts/johndoe -d "{}"
Caso queira ver o documento criado:
curl -X GET http://127.0.0.1:5984/contacts/johndoe
Caso queira apagar um documento específico:
curl -X DELETE http://127.0.0.1:5984/contacts/johndoe?rev=1-795358690
Vamos criar um documento diferente com as hashs:
{
"firstName": "Joe",
"lastName": "Lennon",
"email": "joe@joelennon.ie"
}
curl -X PUT http://127.0.0.1:5984/contacts/joelennon -d '{"firstName": "Joe", "lastName": "Lennon", "email": "joe@joelennon.ie"}'
Então listamos...
curl -X GET http://127.0.0.1:5984/contacts/joelennon {"_id": "joelennon", "_rev": "1-45597617", "firstName": "Joe", "lastName": "Lennon", "email": "joe@joelennon.ie"}
Vamos mudar o ID:
curl -X COPY http://127.0.0.1:5984/contacts/joelennon -H "Destination: johnsmith"
Vendo o que foi criado:
curl -X GET http://127.0.0.1:5984/contacts/johnsmith
Agora seguindo outro documento. Analisando a hash do JSON:
{
"firstName": "John",
"lastName": "Smith",
"email": [
"johnsmith@example.com",
"jsmith@example.com"
],
"phone": "(555) 555-5555"
}
curl -X PUT http://127.0.0.1:5984/contacts/johnsmith -d '{"_rev": "1-4152282996", "firstName": "John", "lastName": "Smith", "email": [ "johnsmith@example.com", "jsmith@example.com" ], "phone": "(555) 555-5555";}'
Comandos VIEWs
Bom, view seria um tipo de filtro para definirmos quais dos dados vão ser mostrados. Vamos passar os dados.
View sem filtro, equivalente a um "select * from table" em bancos relacionais:
curl -X GET http://127.0.0.1:5984/contacts/_all_docs
Agora usamos view com uma ordem:
curl -X GET http://127.0.0.1:5984/contacts/_all_docs?descending=true
Mesma view, porém limitamos para apenas mostrar 1 documento:
curl -X GET http://127.0.0.1:5984/contacts/_all_docs?descending=true\&limit=1
View que mostra todos os documentos e seus conteúdos:
curl -X GET http://127.0.0.1:5984/contacts/_all_docs?include_docs=true
Uma view que lista documentos por ID em sequência:
curl -X GET http://127.0.0.1:5984/contacts/_all_docs_by_seq