MongoDB et JavaScript : comment ça fonctionne ?

Bonjour à tous

Ca fait maintenant 2h que je traîne sur les docs, forums, wikis et tutos en tous genres pour essayer de comprendre comment accéder à MongoDB en JavaScript mais rien n’y fait. Je m’explique.

Je sais faire une page en HTML5 avec une balise ‘’ pour exécuter, dans mon navigateur, du code JavaScript. OK, ça c’est facile.
Je sais coder mon script JavaScript sur cette page pour manipuler directement un fichier XML enregistré sur mon disque dur. OK.

Ensuite j’ai installé MongoDB qui tourne en local sur le port par défaut. Très bien.
Si je veux créer et manipuler une base de données dans MongoDB, c’est simple : j’ouvre le shell de MongoDB et je lance soit des commandes propres à MongoDB pour administrer les bases de données, soit des commandes en JavaScript pour manipuler ces données (puisque MongoDB intègre par défaut le JavaScript pour manipuler les données de la base de données). Parfait.

Maintenant, et c’est là que je comprends pas comment faire, ce que j’aimerais c’est, dans ma page en HTML5, rajouter du code JavaScript dans ma balise pour manipuler les données de ma base de données qui se trouve dans MongoDB, de la même façon que je peux accéder à mon fichier XML en JavaScript directement depuis ma page web.

Alors là je vous entends déjà dire qu’il faut faire gaffe à la sécurité, toussa toussa.
Sauf que je me fous royalement de l’aspect sécurité car ce que j’essaye de faire, c’est de lire les données du fichier XML pour les copier dans ma base MongoDB, puis modifier les données qui sont dans MongoDB depuis ma page web, et rien d’autre. C’est un truc que je fais en local et qui ne transitera jamais par un réseau. C’est un truc que je fais pour moi-même et rien que pour moi.

Donc ce dont j’ai besoin c’est juste d’accéder de la manière la plus directe possible à ma base MongoDB depuis ma page HTML5. Rien d’autre.

Est-ce que quelqu’un saurait me dire comment je peux faire ça ? Ca m’aiderait vraiment !! :confusion-helpsign:

Merci beaucoup

Je découvre, mais là ils ne parlent que de node.js pour les clients
docs.mongodb.org/ecosystem/drivers/javascript/

[quote=“agentsteel”]Je découvre, mais là ils ne parlent que de node.js pour les clients
docs.mongodb.org/ecosystem/drivers/javascript/[/quote]
Oui, à force de lire je crois que je commence à comprendre.

Si je résume ce que j’ai compris jusque là :

[ul][li] on a MongoDB qui tourne en tant que service, et on peut ouvrir un shell pour administrer les bases directement dans MongoDB, avec une syntaxe JavaScript ;

[/li]
[li] ce service n’est accessible depuis une application tierce que via une socket. Donc si je veux manipuler les données qui sont dans MongoDB depuis une autre application, je dois communiquer via une socket. C’est pour ça qu’on utilise Node.js (qui n’est pas un fichier JavaScript mais le nom d’un logiciel) car Node.js permet de créer une socket pour communiquer avec MongoDB ;

[/li]
[li] on peut alors écrire du code JavaScript qu’on interprète avec Node.js. Ce code JavaScript ne sait pas comment écrire ou lire dans la socket, il faut donc un pilote qui va permettre à Node.js de formater les données qu’on lui fournit depuis notre code JavaScript pour les lire et les écrire dans la socket. Ce pilote spécial pour MongoDB est fournit avec Node.js (il suffit de le charger). Mais du coup on doit se plier aux fonctions proposées par le pilote, on n’a donc plus forcément les mêmes méthodes que celles qu’on utilise dans le shell ;

[/li]
[li] si on souhaite rajouter du code HTML5 autour du JavaScript, on ne peut pas directement rajouter ça dans notre fichier JavaScript qu’on utilise pour dialoguer avec le pilote de Node.js qui sert à communiquer avec MongoDB. En effet ce fichier JavaScript est utilisé par Node.js et ce n’est pas une page web. Donc il faut créer un serveur web (ce que Node.js nous permet de faire directement dans notre fichier JavaScript, c’est assez pratique car en fait on peut contrôler tout Node.js avec un seul fichier JavaScript) et on va ensuite ouvrir notre navigateur pour se connecter sur ce serveur web, qui lui va nous renvoyer la page HTML5 par défaut. Dans cette page se trouvent du code JavaScript (qui est donc maintenant chez le client) qui va pouvoir envoyer des données au serveur web, et le serveur web va réagir en fonction des données reçues par la page web. Il faut donc définir précisément ce qu’on souhaite que le serveur fasse en fonction de ce qu’on lui envoie, et c’est ce qu’on fait dans le fichier JavaScript qui configure notre Node.js (et qui gère donc à la fois le serveur web et la communication avec MongoDB). Si j’ai bien compris des mecs ont mis en place des API toutes prêtes pour ça.[/li][/ul]

Voilà ce que j’ai compris, si jamais je me plante n’hésitez pas à me rectifier !!

Mongo est un mauvais chois AMHA si tu veut attaquer ta base directement avec du js il vaut mieux prendre couchdb, tu as les même concepts mais il expose de base une interface REST (en fait tu peux créer des site web avec juste couchdb coté serveur).

Ah, merci pour l’info ! :023

Du coup dans quel(s) cas on a intérêt à utiliser plutôt MongoDB ? Et pourquoi MongoDB est bien plus utilisé que CouchDB ?

Je ne connais ces bases que d’un point de vu théorique. Tu peut regarder ce lien pour avoir plus d’informations sur leurs différences : stackoverflow.com/questions/1243 … vice-versa

Super, merci ! :023

Couchdb a l’air bien plus adapté pour ce que tu veux faire, en effet

Petite subtilité, avec couchdb on dit qu’il faut pas trop mettre à jour les données (en relatif). C’est parce qu’il stocke les données dans un fichier qu’il ouvre en mode apend. Du coup ce fichier grandi indéfiniment, mais la cohérence est garantie. Il faut lancer une commande régulièrement pour nettoyer ça (je ne sais plus si ça peut se faire à chaud).

Dans les faits il gère très bien les modifications de données, mais pour un usage sur de gros volumes c’est à prendre en compte.

Merci pour ces informations :slightly_smiling:

Salut Cluxter,
J’ai vu dans tes messages que tu as reussi grâce à un script à acceder à un fichier .xml. J’utilise un serveur node.js et je dois utiliser le principe ajax j’ai donc créer mon objet xmlhttprequest, mais le fichier xml se s’ouvre pas; lorsque “j’inspecte l’élément”, on me dit que le fichier n’est pas trouvé alors qu’il se trouve dans le même dossier que tous mes autres fichier. js Pourrais-tu jeter un coup d’oeil sur mes codes pour voir s’il me manque quelque chose? Merci d’avance.

mon fichier .xml:

[code]<?xml version="1.0" encoding="utf-8"?>

[/code]

mon fichier .html:

[code]

Techniques AJAX - XMLHttpRequest

Afficher le fichier XML

[/code]

Oula, je pense que je ne suis pas la personne la plus qualifiée pour te répondre malheureusement.

Je t’invite à ouvrir un autre sujet où d’autres personnes pourront mieux te répondre.