Я только начал входить в Node.js. Я исхожу из фона PHP, поэтому я довольно часто использую MySQL для всех потребностей моей базы данных.
Как я могу использовать MySQL с Node.js?
Я только начал входить в Node.js. Я исхожу из фона PHP, поэтому я довольно часто использую MySQL для всех потребностей моей базы данных.
Как я могу использовать MySQL с Node.js?
Просмотрите node.js список модулей
node -mysql выглядит достаточно просто:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'example.org',
user : 'bob',
password : 'secret',
});
connection.connect(function(err) {
// connected! (unless `err` is set)
});
Запросы
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'
node-mysql, вероятно, является одним из лучших модулей, используемых для работы с базой данных MySQL, которая активно поддерживается и хорошо документирована.
Поскольку это старый поток, просто добавляющий обновление:
Если вы запустите только npm install mysql
, вам нужно быть в том же каталоге, что и ваш сервер. Я бы посоветовал сделать это, как в одном из следующих примеров:
npm install -g mysql
1- Добавьте его в package.json
в зависимостях:
"dependencies": {
"mysql": "~2.3.2",
...
2- запустить npm install
Обратите внимание, что для соединений вам также потребуется запустить сервер mysql (который node независим)
Там есть куча учебников, которые объясняют это, и это немного зависит от операционной системы. Просто зайдите в Google и выполните поиск how to install mysql server [Ubuntu|MacOSX|Windows]
. Но в предложении: вы должны пойти в http://www.mysql.com/downloads/ и установить его.
Вот производственный код, который может вам помочь.
Package.json
{
"name": "node-mysql",
"version": "0.0.1",
"dependencies": {
"express": "^4.10.6",
"mysql": "^2.5.4"
}
}
Вот файл сервера.
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);
Ссылка: https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
Шаг I. (Игнорировать, если это уже сделано)
mkdir your_folder
cd your_folder
npm install mysql
Создать таблицу
CREATE TABLE employees (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(50),
location varchar(50),
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO employees (id, name, location) VALUES
(1, 'Jasmine', 'Australia'),
(2, 'Jay', 'India'),
(3, 'Jim', 'Germany'),
(4, 'Lesley', 'Scotland');
В вашем приложении app.js или whaterver_you_create.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mysql = require("mysql");
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
// create connection
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "password",
database: "databasename"
});
con.connect(function(err){
if(err){
console.log('Error connecting to Db');
return;
}
console.log('Connection established');
});
con.query('SELECT * FROM employees',function(err,rows){
if(err) throw err;
console.log('Data received from Db:\n');
for (var i = 0; i < rows.length; i++) {
console.log(rows[i].name);
};
console.log(rows);
});
var employee = { name: 'pankaj', location: 'india' };
con.query('INSERT INTO employees SET ?', employee, function(err,res){
if(err) throw err;
console.log('Last insert ID:', res.insertId);
});
con.query(
'UPDATE employees SET location = ? Where ID = ?',
["South Africa", 5],
function (err, result) {
if (err) throw err;
console.log('Changed ' + result.changedRows + ' rows');
}
);
con.query(
'DELETE FROM employees WHERE id = ?',
[5],
function (err, result) {
if (err) throw err;
console.log('Deleted ' + result.affectedRows + ' rows');
}
);
con.end(function(err) {
// The connection is terminated gracefully
// Ensures all previously enqueued queries are still
// before sending a COM_QUIT packet to the MySQL server.
});
// end
module.exports = app;
Вы также можете попробовать более новое усилие, известное как Node.js DB, целью которого является предоставление общей структуры для нескольких движков базы данных. Он построен на С++, поэтому гарантируется производительность.
В частности, вы можете использовать его драйвер db-mysql для Node.js Поддержка MySQL.
KnexJs может использоваться как построитель запросов SQL как в Node.JS, так и в браузере. Я нахожу его простым в использовании. Попробуем - 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'
}
});
Вы можете использовать его так:
knex.select('*').from('users')
или
knex('users').where({
first_name: 'Test',
last_name: 'User'
}).select('id')
подключите базу данных mysql, установив библиотеку. здесь был выбран стабильный и простой в использовании модуль node -mysql.
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();
Imo, вы должны попробовать MySQL Connector/Node.js, который является официальным драйвером Node.js для MySQL. Смотрите ref-1 и ref-2 для подробного объяснения. Я пробовал mysqljs/mysql, который доступен здесь, но я не нахожу подробную документацию по классам, методам, свойствам этой библиотеки.
Поэтому я перешел на стандартный MySQL Connector/Node.js
с X DevAPI
, поскольку это асинхронная клиентская библиотека на основе Promise и предоставляет хорошую документацию. Взгляните на следующий фрагмент кода:
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);
});
var express = require('express');
var router = express.Router();
/* GET home page. */
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "****",
database: "nodejs"
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
});
module.exports = con;