Skip to content

Instantly share code, notes, and snippets.

@Symfomany
Last active May 30, 2017 05:56
Show Gist options
  • Save Symfomany/4a17129561db68e6954cd2a66b115e0f to your computer and use it in GitHub Desktop.
Save Symfomany/4a17129561db68e6954cd2a66b115e0f to your computer and use it in GitHub Desktop.

enter image description here

Atelier Express & RethinkDB

###Etape 0 : Lire ces pages de la Documentation RethinkDB

Introduction de Rethinkdb et son ReQL https://rethinkdb.com/docs/introduction-to-reql/

Objet imbriqué aved RethinkDB https://rethinkdb.com/docs/nested-fields/javascript/

Intégration de RethinkDB avec Node https://rethinkdb.com/docs/guide/javascript/

Le plus important API de RethinkDB avecNode https://www.rethinkdb.com/api/javascript/

Liste non-exhaustive de la Documentation RethinkDB

Regex; https://rethinkdb.com/api/javascript/match/

Row: https://rethinkdb.com/api/javascript/row/

Pluck: https://rethinkdb.com/api/javascript/pluck/

hasField: https://rethinkdb.com/api/javascript/has_fields/

And/Or: https://rethinkdb.com/api/javascript/and/

GT: https://rethinkdb.com/api/javascript/gt/

Round https://rethinkdb.com/api/javascript/round/

Not https://rethinkdb.com/api/javascript/not/

Etape 1: Requêtes ReQL avec RethinkDB

NB: pluck = "ceuillir" ;) NB2: Je vous conseil d'avoir un onglet ouvert sur tous les utilisateurs afficher dans votre console RethinkDB afin de comparer la justesse de vos requêtes

Démarrer le serveur RethinDB rethinkdb

Afficher le nom et l'age des filles (gender = false) r.table("users").pluck('name', 'age')

Afficher les images (picture) des Handballeurs (sports) r.table("users").filter(function(user){ return user('sports').contains('Handball') }).pluck('picture')

Afficher le nom, l'id et email des utilisateurs actifs(enable = true) qui ai un budget compris entre 15k et 35k r.table("users").filter(function(user){ return user('enable').eq(true).and(user('budget').gt(15000).and(user('budget').lt(45000))) }).pluck('id', 'nom', 'email')

Trier par date d'enregistrement(registered) les utilisateurs de la catégorie Amateur r.table("users").filter(function(user){ return user('category').eq("Amateur") }).orderBy("registered")

** Récupérer la liste des 5 utilisateurs de la catégory Professionnel les plus vieux** r.table("users").filter(function(user){ return user('category').eq("Professionnel") }).orderBy(r.desc("age")).limit(5)

Récupérer le nom des 2 utilisateurs masculin(gender = true) qui ont le plus de budget de la ville de lyon r.table("users").filter(function(user){ return user('address')('city').eq("Lyon").and(user('gender').eq(true)) }).orderBy(r.desc("budget")).limit(5)

Calculer la moyenne des budget des utilisateurs de Lyon ou Paris (Bonus: arrondire cette moyenne) r.table("users").filter(function(user){ return user('address')('city').eq('Paris').or(user('address')('city').eq('Lyon')) }).avg('budget')

avec Bonus: r.round(r.table("users").filter(function(user){ return user('address')('city').eq('Paris').or(user('address')('city').eq('Lyon')) }).avg('budget'))

Calculer la somme du nombre de likes total des utilisateurs sur FB r.table("users").sum(function(user) { return user('fb')('likes') })

Calculer la moyenne des amis sur FB des utilisateurs ayant au moins 18 ans r.round(r.table("users").filter(function(user){ return user('age').ge(18) }).avg(function(user){ return user('fb')('amis') }))

Compter le nombre d'utilisateur faisant du HTML r.table("users").filter(function(user){ return user('languages').contains('HTML') }).count()

Compter le nombre d'utilisateurs ayant des photos et faisant du HTML ET CSS r.table("users").hasFields('photos').filter(function(user){ return user('languages').contains('HTML', 'CSS') }).count()

Compter le nombre d'utilisateurs ayant des photos de Lyon ou Paris r.table("users").hasFields('photos').filter(function(user){ return r.expr(['Lyon', 'Paris']).contains(user('address')('city')) }).count()

Trier par budget décroissant les 10 utilisateurs qui on la lettre "a" dans leur name r.table("users").filter(function(user){ return user('name').match('a') }).orderBy(r.desc('budget'))

Compter le nombre d'utilisateurs ayant un website finissant par l'extension ".info" avec une insensibilité à la casse r.table("users").filter(function(user){ return user('website').match('(?i).info') }).count()

Compter le nombre de likes total par catégorie r.table("users").group('category').sum(function(user){ return user('fb')('likes') })

Partie 2 - Bonus

  • Compter le nombre total de commentaires
  • Afficher de manieres distinctes la liste des sports(sans doublons)
  • Modifier la street en "75 Rue de la Paix" des utilisateurs de la ville de Paris
  • Modifier l'activation des utilisateurs inactifs à true si ils font du JS
  • Supprimer les utilisateurs qui on un code insee
  • Restaurer la bdd avec un import --force ou un restore https://www.rethinkdb.com/docs/backup/

Bonus NodeJS: Intégrer avec Node-Express RethnkDB (nous le reverrons ensemble)

Aide: https://www.rethinkdb.com/docs/guide/javascript/

Consigne: Derriere l'URI "/" en Express, on renverra au format JSON (res.json()) la liste des 5 derniers utilisateurs inscrits actifs(enable = true) (trié par date registred)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment