MySQL与Node.js

MySQL with Node.js

我刚开始进入Node.js. 我来自PHP背景,所以我很习惯使用MySQL来满足我所有的数据库需求。

如何在Node.js中使用MySQL?


查看node.js模块列表

  • node-mysql - 实现MySQL协议的node.js模块
  • node-mysql2 - 又一个纯JS异步驱动程序。流水线,准备好的陈述。
  • node-mysql-libmysqlclient - 基于libmysqlclient的MySQL异步绑定

node-mysql看起来很简单:

1
2
3
4
5
6
7
8
9
10
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret',
});

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

查询:

1
2
3
4
5
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数据库的最佳模块之一,该数据库是主动维护和记录良好的。


因为这是一个旧线程只是添加更新:

要安装MySQL node.js驱动程序:

如果只运行npm install mysql,则需要与运行服务器的目录位于同一目录中。我建议按以下示例之一进行操作:

对于全局安装:

1
npm install -g mysql

对于本地安装:

1-将其添加到依赖项中的package.json

1
2
3
"dependencies": {
   "mysql":"~2.3.2",
     ...

2-运行npm install

请注意,对于要发生的连接,您还需要运行mysql服务器(与节点无关)

要安装MySQL服务器:

有很多教程可以解释这一点,它有点依赖于操作系统。只需去谷歌搜索how to install mysql server [Ubuntu|MacOSX|Windows]即可。但在一句话中:你必须去http://www.mysql.com/downloads/并安装它。


这是生产代码,可以帮助您。

的package.json

1
2
3
4
5
6
7
8
{
 "name":"node-mysql",
 "version":"0.0.1",
 "dependencies": {
   "express":"^4.10.6",
   "mysql":"^2.5.4"
  }
}

这是服务器文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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/


KnexJs可以在Node.JS和浏览器中用作SQL查询构建器。
我觉得它很容易使用。试试吧 - Knex.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ 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'
  }
});

你可以像这样使用它

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

要么

1
2
3
4
knex('users').where({
  first_name: 'Test',
  last_name:  'User'
}).select('id')

Imo,你应该试试MySQL Connector / Node.js这是MySQL的官方Node.js驱动程序。
有关详细说明,请参见ref-1和ref-2。
我已经尝试了mysqljs / mysql,这里有可用的,但我没有找到关于这个库的类,方法和属性的详细文档。

所以我用X DevAPI切换到标准的MySQL Connector/Node.js,因为它是一个基于Promise的异步客户端库并提供了很好的文档。
看一下下面的代码片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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);
});


您还可以尝试一种名为Node.js DB的新功能,旨在为多个数据库引擎提供通用框架。它是用C ++构建的,因此性能得到保证。

具体来说,您可以将其db-mysql驱动程序用于Node.js MySQL支持。


通过安装库连接mysql数据库。在这里,选择了稳定且易于使用的node-mysql模块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
npm install [email protected]-alpha2

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

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

client.connect();

对于NodeJS mysql的连接和查询示例