Je viens de commencer à entrer dans Node.js. Je viens d'un arrière-plan PHP, donc je suis assez habitué à utiliser MySQL pour tous mes besoins de base de données.
Comment puis-je utiliser MySQL avec Node.js?
multipleStatements
fonction.
Je viens de commencer à entrer dans Node.js. Je viens d'un arrière-plan PHP, donc je suis assez habitué à utiliser MySQL pour tous mes besoins de base de données.
Comment puis-je utiliser MySQL avec Node.js?
multipleStatements
fonction.
Réponses:
Consultez la liste des modules node.js
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'
require
ing d'une bibliothèque javascript
node-mysql est probablement l'un des meilleurs modules utilisés pour travailler avec la base de données MySQL qui est activement maintenue et bien documentée.
Puisqu'il s'agit d'un ancien fil ajoutant simplement une mise à jour:
Si vous exécutez simplement npm install mysql
, vous devez être 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:
npm install -g mysql
1- Ajoutez-le à votre package.json
dans les dépendances:
"dependencies": {
"mysql": "~2.3.2",
...
2- courir npm install
Notez que pour que les connexions se produisent, vous devrez également exécuter le serveur mysql (qui est indépendant du nœud)
Il existe un tas de tutoriels qui expliquent cela, et cela dépend un peu du système d'exploitation. Accédez simplement à Google et recherchez how to install mysql server [Ubuntu|MacOSX|Windows]
. Mais en une phrase: vous devez aller sur http://www.mysql.com/downloads/ et l'installer.
npm install --save mysql
va l'installer l'ajouter package.json
automatiquement à votre
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/
Cannot read property 'release' of undefined
Imo, vous devriez essayer MySQL Connector / Node.js qui est le pilote Node.js officiel 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.
J'ai donc opté pour la norme MySQL Connector/Node.js
avec X DevAPI
, car il s'agit d'une bibliothèque client asynchrone basée sur Promise et qui fournit une bonne documentation. Jetez un œ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);
});
KnexJs peut être utilisé comme générateur de requêtes SQL à la fois dans Node.JS et dans le navigateur. Je le trouve facile à utiliser. Laissez-le 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 ceci
knex.select('*').from('users')
ou
knex('users').where({
first_name: 'Test',
last_name: 'User'
}).select('id')
Vous pouvez également essayer un nouvel effort connu sous le nom de 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 la prise en charge de Node.js MySQL .
connectez la base de données mysql en installant une bibliothèque. ici, choisi le module node-mysql stable et facile à utiliser.
npm install mysql@2.0.0-alpha2
var http = require('http'),
mysql = require('mysql');
var sqlInfo = {
host: 'localhost',
user: 'root',
password: 'urpass',
database: 'dbname'
}
client = mysql.createConnection(sqlInfo);
client.connect();
Vous pouvez ignorer l'ORM, les générateurs, etc. et simplifier votre gestion DB / SQL à l'aide de sqler
et sqler-mdb
.
-- create this file at: db/mdb/setup/create.database.sql
CREATE DATABASE IF NOT EXISTS sqlermysql
const conf = {
"univ": {
"db": {
"mdb": {
"host": "localhost",
"username":"admin",
"password": "mysqlpassword"
}
}
},
"db": {
"dialects": {
"mdb": "sqler-mdb"
},
"connections": [
{
"id": "mdb",
"name": "mdb",
"dir": "db/mdb",
"service": "MySQL",
"dialect": "mdb",
"pool": {},
"driverOptions": {
"connection": {
"multipleStatements": true
}
}
}
]
}
};
// create/initialize manager
const manager = new Manager(conf);
await manager.init();
// .sql file path is path to db function
const result = await manager.db.mdb.setup.create.database();
console.log('Result:', result);
// after we're done using the manager we should close it
process.on('SIGINT', async function sigintDB() {
await manager.close();
console.log('Manager has been closed');
});