31
Jul/09
0

Première utilisation de CouchDB

Maintenant que la base est disponible, le but va être de remplacer le code JSON présent dans le contrôleur de test, par des données réelles - c’est à dire alimentées par la base documentaire.

Création d’un document

La première étape sera de créer un élément en base de données. Pour cela, nous utilisons futon.

En cliquant sur la base de données dans l’interface d’administration, on accède à un menu permettant de créer un nouveau document. Un document peut posséder n’importe quel schéma, c’est à dire n’importe quel ensemble de {clés, valeurs}. Lorsque l’on crée un document, le seul champ obligatoire à saisir est l’identifiant - qui peut être n’importe quelle valeur. Futon affiche alors le nouveau document :

Document créé

L’identifiant saisi dans cet exemple est note_01.

On peut alors saisir n’importe quel champ via le bouton « add field », comme les champs titre et contenu de notre exemple, et on clique sur le bouton « save » :

Ajout de champs

Ici, la valeur saisie doit être conforme à la syntaxe JSON, c’est pourquoi on a utilisé des guillemets pour indiquer l’utilisation d’un type string.

On remarque alors que les boutons de navigation dans les révisions sont actifs, et que le champ interne _reva été modifié. Un click sur le lien previous emmène bien sur la version sans les deux champs ajoutés.

Visualisation

Le document au format JSON peut être consulté, soit en cliquant sur l’onglet Source, soit en accédant à l’objet directement par l’URL http://localhost:5984/ercm/note_01 :

Accès simple

C’est ce que nous allons mettre en place dans notre application.

On modifie notre contrôleur pour réaliser une action GET sur l’URL décrite précédemment. Le code peut être testé directement dans le shell :

2> ecouch:doc_get("ercm", "note_01").
{ok,{obj,[{"_id",<<"note_01">>},
          {"_rev",<<"2-2831471176">>},
          {"title",<<"Title from DB">>},
          {"content",<<"Content from DB">>}]}}

La structure retournée doit être décodée afin de ne récupérer que la partie qui nous intéresse. On modifie la méthode dans src/ctrl_test.erl comme suit :

handle_http(Req, {'GET', json}, _) ->
  {ok, {_, Json}} = ecouch:doc_get("ercm", "note_01"),
  ercm_ctx:return_json_data(Req, Json).

Les nouvelles données sont affichées :

Récupération données base

Ne reste plus qu’à rendre dynamique ce fonctionnement.

Sources : http://github.com/rv/ercm/tree/blog06

Filed under: CouchDB, Erlang
Comments (0) Trackbacks (0)

No comments yet.

Leave a comment

No trackbacks yet.