# EEMI - TP Chatbot en Node.js

## Vérifier si Node est bien installé sur la machine

- `node -v` pour connaître la version actuelle de node. Si le terminal renvoie un message d'erreur : npm install node
- `curl -v` pour connaître la version actuelle de curl. Si le terminal renvoie un message d'erreur : npm install curl

## Récupérer le dossier en local

- Cloner le repot en local à l'aide de la commande suivante : git clone -q https://gitlab.eemi.tech/manon.salsou/nodesjs---chatbot.git
- Changer de directory à l'aide de la commande `cd Dossier`

## Installer les dépendances et faire tourner le programme

- Installer les dépendances requises à l'aide de la commande `pm install` pour le node_modules et `pm install express --save` pour Express
- `pm start server.js` dans le terminal
- Ouvrir un navigateur à l'adresse suivante : localhost:3000/
- Si "Hello World" s'affiche cela signifie que le projet a correctement démarré.

## Mise en place du server MongoDB

- Vérifier que Docker est bien installé sur votre machine
- Installer MongoDB sur votre machine avec
  - `brew upgrade`
  - `brew tap mongod/brew`
  - `brew install mongodb-community@4.2` --> Remplacer 4.2 par la dernière version existante ici si besoin : https://docs.mongodb.com/manual/release-notes/
- Créer une image Docker temporaire `$ docker run --rm --publish 27017:27017 --name mongodb-pour-nodejs mongo:4`. Une fois créée, la base se supprimera quand l'exécution de cette ligne de code se stopera. Aucun donnée ne sera sauvegardée. Cette base de donnée se cale sur le template de création mango:4 où 4 est la version de mango.
- Tester la connection au server MongoDB `$ docker run --rm -it --link mongodb-pour-nodejs:mongo mongo:4 mongo --host mongo test`

### Principales commandes dans MangoDB

- `show dbs` pour afficher les bases de données existantes
- `use nomDatabase` pour utiliser nomDatabase
- `show collection` pour afficher les collections (tables) de la base de données
- `db.collection('nomCollection').find()` pour afficher toutes les données de la collection nomCollection
