Acabo de empezar a entrar en Node.js. Vengo de un fondo PHP, así que estoy bastante acostumbrado a usar MySQL para todas mis necesidades de base de datos.
¿Cómo puedo usar MySQL con Node.js?
multipleStatements
función.
Acabo de empezar a entrar en Node.js. Vengo de un fondo PHP, así que estoy bastante acostumbrado a usar MySQL para todas mis necesidades de base de datos.
¿Cómo puedo usar MySQL con Node.js?
multipleStatements
función.
Respuestas:
Echa un vistazo a la lista de módulos de node.js
node-mysql parece bastante 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)
});
Consultas:
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
crear una biblioteca de JavaScript?
node-mysql es probablemente uno de los mejores módulos utilizados para trabajar con la base de datos MySQL que se mantiene activamente y está bien documentado.
Dado que este es un hilo antiguo que solo agrega una actualización:
Si ejecuta solo npm install mysql
, debe estar en el mismo directorio donde ejecuta su servidor. Aconsejaría hacerlo como en uno de los siguientes ejemplos:
npm install -g mysql
1- Añádelo a tu package.json
en las dependencias:
"dependencies": {
"mysql": "~2.3.2",
...
2- correr npm install
Tenga en cuenta que para que las conexiones sucedan, también deberá ejecutar el servidor mysql (que es independiente del nodo)
Hay un montón de tutoriales que explican esto, y depende un poco del sistema operativo. Solo ve a google y busca how to install mysql server [Ubuntu|MacOSX|Windows]
. Pero en una oración: tienes que ir a http://www.mysql.com/downloads/ e instalarlo.
npm install --save mysql
lo instalará, agréguelo a su package.json
automáticamente
Aquí hay un código de producción que puede ayudarlo.
Package.json
{
"name": "node-mysql",
"version": "0.0.1",
"dependencies": {
"express": "^4.10.6",
"mysql": "^2.5.4"
}
}
Aquí está el archivo del servidor.
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);
Referencia: https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
Cannot read property 'release' of undefined
Imo, deberías probar MySQL Connector / Node.js, que es el controlador oficial de Node.js para MySQL. Ver ref-1 y ref-2 para una explicación detallada. He intentado mysqljs / mysql que está disponible aquí , pero no encuentro documentación detallada sobre clases, métodos, propiedades de esta biblioteca.
Así que cambié al estándar MySQL Connector/Node.js
con X DevAPI
, ya que es una biblioteca de cliente asincrónica basada en Promise y proporciona buena documentación. Eche un vistazo al siguiente fragmento de código:
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 se puede utilizar como un generador de consultas SQL tanto en Node.JS como en el navegador. Me resulta fácil de usar. Vamos a probarlo - 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'
}
});
Puedes usarlo así
knex.select('*').from('users')
o
knex('users').where({
first_name: 'Test',
last_name: 'User'
}).select('id')
También puede probar un nuevo esfuerzo conocido como Node.js DB que tiene como objetivo proporcionar un marco común para varios motores de bases de datos. Está construido con C ++, por lo que el rendimiento está garantizado.
Específicamente, podría usar su controlador db-mysql para el soporte Node.js MySQL .
conecta la base de datos mysql instalando una biblioteca. aquí, elegimos el módulo nodo-mysql estable y fácil de usar.
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();
Puede omitir el ORM, los constructores, etc. y simplificar su administración de DB / SQL usando sqler
y 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');
});