Base de Donnée en JS

Fermé
kalen - 26 mai 2022 à 11:48
 DoctorHow - 26 mai 2022 à 17:25
Bonjour,
J'aimerai utiliser une base de donnée en Javascript sur un site web.
J'ai cherché mais je ne trouve/comprends pas comment je pourrait faire.

Pourriez vous m'indique comment faire ?
Je remercie tout ceux qui pourront m'aider!

Configuration: Windows / Chrome 101.0.4951.67

3 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 mai 2022 à 12:27
Bonjour
A moins de faire du nodejs, tu ne peux pas.
Le JavaScript s'exécute côté client... Pour accéder à une bdd.. il te faut un langage serveur.
Tu peux lier ensuite les deux en ajax si besoin
0
Alors justement avec nodejs j'ai reussi a utiliser une basse de donéé mais je n'arrivait pas a lancer le script autrement qu'avec le terminal.

Comment on peut faire pour relier avec Ajax ?

Si je veux récupérer ou envoyer des données dans la bdd je dois faire un script comme ça?
const filename = "main.db";
const sqlite3 = require("sqlite3");

export function get_datas(name) {
  let returnedData = undefined;
  let db = new sqlite3.Database(`../db/${filename}`, (err) => {
    if (err) throw err;
    console.log("Database started at " + filename);
    db.all(`SELECT * from test WHERE name=${name}`, (err, data) => {
      if (err) throw err;
      returnedData = data;
    });
  });

  db.close((err) => {
    if (err) throw err;
    console.log("Database closed");
  });
  return returnedData;
}

Et comment je dois faire pour appeler ce script depuis la page web et récupérer les données ?
0
Salut,
une base de données n'est jamais en principe appelée directement depuis une page web.
Ce qui est plutôt un bon principe puisque permet sa sécurité, détails ici:
https://fr.wikipedia.org/wiki/Architecture_trois_tiers

Une base sqlite est particulière car n'est pas externe. C'est un programme en C, beaucoup moins sécurisé et fiable qui n'a pas besoin de serveur. En gros le programme s'exécute dans le programme.
https://fr.wikipedia.org/wiki/SQLite

On peut d'ailleurs remarquer que votre base est créée dans votre code(il existe des bibliothèques sqlite en JavaScript c'est peut-être cela?):

 let db = new sqlite3.Database....
//-- new étant un mot clé qui crée un objet en JavaScript et dans votre code une constante


Donc si la question est comment utiliser sqlite directement dans le navigateur la réponse est en créant celle ci directement dans le navigateur ce qui fait qu'une fois la page fermée la base n'existe plus.
Il existe d'autres solutions plus pratique qui auront le même désavantage = stocker des données uniquement pour l'utilisateur(donc pas une base de données exploitable sur réseau, tenez compte aussi des autres remarques eles sont pertinentes notamment sur la conception MCD/MLD avec la méthode Merise par exemple):

https://openclassrooms.com/forum/sujet/acces-a-une-base-de-donnees-sqlite

Voilà si vous avez le choix utiliser une vrai base de données sur serveur comme mySQL qui est gratuite(pas la location d'un serveur mais comprise dans les offres d'hébergement les plus basiques). Il faut bien entendu un langage serveur pour y accéder et comme vous avez node.js c'est le cas(sinon PHP ou autre).

Ou alors faire fonctionner votre sqlite sur node.js mais c'est très peu avantageux(plutôt désavantageux en fait) par rapport à une base sur serveur externe( une partie matérielle différente de celle de node et de la page qui forment les 3 parties qui fonctionnent ensemble)

"Comment on peut faire pour relier avec Ajax ? "
Euh cette question n'a pas de sens ou plutôt contient la réponse dans la question.
AJAX est une méthode(ou une astuce) et non un langage et signifie:
Asynchronymous JavaScript And XML, en français JavaScript et XML asynchrones.

Rendre un fichier externe(non limité à XML qui était utilisé lorsqu'il n'y avait que XML et est avantageusement remplacé par JSON si l'on est dans un cadre formel de développement comme JS) asynchrone permet donc de faire transiter des données avec un appel au serveurs avant qu'il y ait de requêtes en créant un fichier de méta-données(celles issues de la requête XML ou JSON exploitable plus facilement avec JavaScript).
Donc relier ce qui est une façon de relier les trois entités nécessaires au fonctionnement du web dynamique(99% des sites web) n'a pas vraiment de sens.

https://fr.wikipedia.org/wiki/Page_web_dynamique

Renseignez vous sur AJAX et son utilisation(un exemple de cas par exemple) tout comme sur les bases de données cela vous aidera plus qu'une réponse sur un forum peut le faire et bien sûr au delà d'une explication sommaire de Wikipédia.

Par exemple:
https://duckduckgo.com/?q=node+js+se+connecter+%C3%A0+une+base+de+donn%C3%A9es

Même chose si vous persévérez à choisir SQLite plutôt qu'une base de données plus conventionnelle(plus efficace et performante aussi et avec plus de ressources pour apprendre et utiliser) les réponses sont avant tout du côté du manuel d'utilisation de SQLite et si vous utilisez une bibliothèque particulière(du SQLite en JS) c'est du côté de celle ci que vous devez regarder.

AJAX:
https://www.w3schools.com/js/js_ajax_intro.asp

En notant qu'il y a d'autres moyens plus pratique que d'utiliser XMLHttpRequest de nos jours même si ça reste la base.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 mai 2022 à 14:32
Si tu fais du node tu n'as pas besoin d'Ajax..
Mais je ne touche pas a ce truc (le node).. donc je ne pourrai pas te venir en aide
0