web-dev-qa-db-fra.com

MySQL avec Node.js

Je viens de commencer à entrer dans Node.js. Je viens de PHP, je suis donc assez habitué à utiliser MySQL pour tous mes besoins en base de données.

Comment utiliser MySQL avec Node.js?

372
crawf

Découvrez la liste des modules node.js

  • node-mysql - Un module node.js implémentant le protocole MySQL
  • node-mysql2 - Encore un autre pilote purement asynchrone JS. Pipelining, déclarations préparées.
  • node-mysql-libmysqlclient - Liaisons asynchrones MySQL basées sur libmysqlclient

node-mysql semble assez simple:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  Host     : 'example.org',
  user     : 'bob',
  password : 'secret',
});

connection.connect(function(err) {
  // connected! (unless `err` is set)
});

Requêtes:

var post  = {id: 1, title: 'Hello MySQL'};
var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {
  // Neat!
});
console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'
425
mak

node-mysql est probablement l'un des meilleurs modules disponibles pour travailler avec la base de données MySQL, qui est activement maintenue et bien documentée.

28
yojimbo87

Comme il s'agit d'un ancien fil qui vient d'ajouter une mise à jour:

Pour installer le pilote MySQL node.js:

Si vous exécutez uniquement npm install mysql, vous devez vous trouver dans le même répertoire que celui où vous exécutez votre serveur. Je conseillerais de le faire comme dans l'un des exemples suivants:

Pour une installation globale:

npm install -g mysql

Pour une installation locale:

1- Ajoutez-le à votre package.json dans les dépendances:

"dependencies": {
    "mysql": "~2.3.2",
     ...

2- lancer npm install


Notez que pour que les connexions se produisent, vous devez également exécuter le serveur mysql (indépendant du noeud).

Pour installer le serveur MySQL:

Il existe de nombreux tutoriels qui expliquent cela, et cela dépend un peu du système d'exploitation. Il suffit d'aller sur Google et recherchez how to install mysql server [Ubuntu|MacOSX|Windows]. Mais dans une phrase: vous devez aller à http://www.mysql.com/downloads/ et l’installer.

19
fmsf

Voici le code de production qui peut vous aider.

Package.json

{
  "name": "node-mysql",
  "version": "0.0.1",
  "dependencies": {
    "express": "^4.10.6",
    "mysql": "^2.5.4"
  }
}

Voici le fichier serveur.

var express   =    require("express");
var mysql     =    require('mysql');
var app       =    express();

var pool      =    mysql.createPool({
    connectionLimit : 100, //important
    Host     : 'localhost',
    user     : 'root',
    password : '',
    database : 'address_book',
    debug    :  false
});

function handle_database(req,res) {

    pool.getConnection(function(err,connection){
        if (err) {
          connection.release();
          res.json({"code" : 100, "status" : "Error in connection database"});
          return;
        }   

        console.log('connected as id ' + connection.threadId);

        connection.query("select * from user",function(err,rows){
            connection.release();
            if(!err) {
                res.json(rows);
            }           
        });

        connection.on('error', function(err) {      
              res.json({"code" : 100, "status" : "Error in connection database"});
              return;     
        });
  });
}

app.get("/",function(req,res){-
        handle_database(req,res);
});

app.listen(3000);

Référence: https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/

10
Shaikh Shahid

KnexJs peut être utilisé comme générateur de requêtes SQL dans Node.JS et le navigateur. Je le trouve facile à utiliser. Laissons l’essayer - Knex.js

$ npm install knex --save
# Then add one of the following (adding a --save) flag:
$ npm install pg
$ npm install sqlite3
$ npm install mysql
$ npm install mysql2
$ npm install mariasql
$ npm install strong-Oracle
$ npm install Oracle
$ npm install mssql


var knex = require('knex')({
  client: 'mysql',
  connection: {
    Host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  }
});

Vous pouvez l'utiliser comme ça

knex.select('*').from('users')

ou

knex('users').where({
  first_name: 'Test',
  last_name:  'User'
}).select('id')
3
Quy Tang

Pour votre part, vous devriez essayer MySQL Connector/Node.js, qui est le pilote officiel Node.js pour MySQL. Voir ref-1 et ref-2 pour une explication détaillée. J'ai essayé mysqljs/mysql qui est disponible ici , mais je ne trouve pas de documentation détaillée sur les classes, les méthodes et les propriétés de cette bibliothèque.

Je suis donc passé à la norme MySQL Connector/Node.js avec X DevAPI, car il s'agit d'une bibliothèque client asynchrone basée sur Promise et fournit une bonne documentation. . Jetez un coup d'œil à l'extrait de code suivant:

const mysqlx = require('@mysql/xdevapi');
const rows = [];

mysqlx.getSession('mysqlx://localhost:33060')
.then(session => {
    const table = session.getSchema('testSchema').getTable('testTable');

    // The criteria is defined through the expression.
    return table.update().where('name = "bar"').set('age', 50)
        .execute()
        .then(() => {
            return table.select().orderBy('name ASC')
                .execute(row => rows.Push(row));
        });
})
.then(() => {
    console.log(rows);
});
2
Lex Soft

Vous pouvez également essayer un nouvel effort appelé Node.js DB qui vise à fournir un cadre commun pour plusieurs moteurs de base de données. Il est construit avec C++, donc les performances sont garanties.

Plus précisément, vous pouvez utiliser son pilote db-mysql pour support de Node.js MySQL .

1
Mariano Iglesias

connectez la base de données mysql en installant une bibliothèque. ici, choisi le module node-mysql stable et facile à utiliser.

npm install [email protected]

var http = require('http'),
   mysql = require('mysql');

var sqlInfo = {
   Host: 'localhost',
   user: 'root',
   password: 'urpass',
   database: 'dbname'
}
client = mysql.createConnection(sqlInfo);

client.connect();

Pour NodeJS, exemple de connexion et de requête mysql

0
Prabin Tp