node.js如何操作MySQL数据库

 更新时间:2020年10月29日 14:34:04   作者:青城同学  
这篇文章主要介绍了node.js如何操作MySQL数据库,帮助大家更好的进行web开发,感兴趣的朋友可以了解下

MySQL数据库作为最流行的开源数据库。基本上是每个web开发者必须要掌握的数据库程序之一了。

基本使用

node.js上,最受欢迎的mysql包就是mysql模块。

npm install mysql

然后在js脚本里面直接引用进来

var mysql   = require('mysql');

配置mysql的数据库连接。

var connection = mysql.createConnection({
 host   : 'ip',
 user   : '用户名',
 password : '密码',
 database : 'dbname'
});
connection.connect();

这样就拿到了一个连接。

然后就可以愉快的进行各种curd操作了。

node.js对数据库的curd都在query这个方法里面。这点和ado.net有很大的区别。

你的所有的操作,都从query的回调函数里面获得结果

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
 if (error) throw error;
 console.log('The solution is: ', results[0].solution);
});

连接池操作

在单机软件中,我们之间使用简单获得一个连接,然后就行了。

但是在面向互联网的web服务里面,频繁的创建和关闭连接,是很消耗服务器性能的。

于是我们的前辈们发明了各种池子。比如多线程操作中的线程池,游戏开发中的对象池,当然还包括数据库操作的连接池。

创建连接池:

var mysql = require('mysql');
var pool = mysql.createPool({
 connectionLimit : 连接池数量,
 host      : 'ip地址',
 user      : '账号',
 password    : '密码',
 database    : '数据库名称'
});

然后就是和上文一样的curd操作

//从连接池中获取一个连接
pool.getConnection(function(err, connection) {
  if (err) throw err; // not connected!
 
  // 使用这个连接curd
  connection.query('SELECT something FROM sometable', function (error, results, fields) {
    // 使用完之后,记得把这个连接放到连接池里面去
    connection.release();
 
    // Handle error after the release.
    if (error) throw error;
 
  });
});

如果你的程序要退出,请把调用连接池的end()方法。不然程序会卡在后台,一直退出失败。

封装成Promise

在ES6中,可以直接用和C#的await一样的语法去调用js的异步函数。

但是要求这个函数必须是async声明和返回值是Promise对象。

query = function (sql, arr, callback) {
  console.log('获取一个连接');
  return new Promise(function (resolve, reject) {
    pool.getConnection(function (err, connection) {
      if (err) {
        reject(err);// not connected!
      } else {
        console.log('开始查询');
        connection.query(sql, arr, function (error, results, fields) {
          connection.release();
          console.log('连接已经释放,返回结果');

          if (error) reject(error);
          // callback && callback(results, fields)
          resolve({
            rows: results,
            fields: fields
          })
        });
      }


    });
  })


}

简单的用法到这里就结束了。当然还有更高级的用法,比如MySQL的Cluster操作等。有兴趣的话,可以去研究,因为我目前用不到这种功能,所有就不往后去深究了。

以上就是node.js如何操作MySQL数据库的详细内容,更多关于node.js 操作数据库的资料请关注脚本之家其它相关文章!

相关文章

  • node.js文件操作系统实例详解

    node.js文件操作系统实例详解

    这篇文章主要介绍了node.js文件操作,结合实例形式详细分析了node.js针对文件的读取、写入、删除、遍历、监控等各种常见操作技巧,需要的朋友可以参考下
    2019-11-11
  • node.js ws模块搭建websocket服务端的方法示例

    node.js ws模块搭建websocket服务端的方法示例

    这篇文章主要介绍了node.js ws模块搭建websocket服务端的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • node版本管理器Volta的简单使用

    node版本管理器Volta的简单使用

    Volta是一款强大的JavaScript工具管理器,它简化了命令行工具的安装和管理,本文主要介绍了node版本管理器Volta的简单使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • 用npm-run实现自动化任务的方法示例

    用npm-run实现自动化任务的方法示例

    这篇文章主要介绍了用npm-run实现自动化任务的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 一文详解nodejs的path模块使用

    一文详解nodejs的path模块使用

    这篇文章主要为大家介绍了nodejs的path模块使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • nodejs微信公众号支付开发

    nodejs微信公众号支付开发

    这篇文章主要为大家详细介绍了nodejs微信公众号支付开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 详解nodejs微信公众号开发——4.自动回复各种消息

    详解nodejs微信公众号开发——4.自动回复各种消息

    这篇文章主要介绍了详解nodejs微信公众号开发——4.自动回复各种消息,非常具有实用价值,需要的朋友可以参考下
    2017-04-04
  • node.js通过url读取文件

    node.js通过url读取文件

    这篇文章主要为大家详细介绍了node.js通过url读取文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • node.js中的fs.lchmod方法使用说明

    node.js中的fs.lchmod方法使用说明

    这篇文章主要介绍了node.js中的fs.lchmod方法使用说明,本文介绍了fs.lchmod的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js 的异步 IO 性能探讨

    Node.js 的异步 IO 性能探讨

    Node.js 的卖点是「异步单线程」,虽然主流 Web 后端编程语言中,对异步编程有很好支持的语言并不少,但只有 Node.js 丧心病狂地将所有 IO 强制异步进行。
    2014-10-10

最新评论