NodeJS操作mysql

  • 2020 年 3 月 16 日
  • 筆記

背景

在 KOA2 中操作mysql 数据库,行程本文。

安装包

yarn add mysql  --save

导入

var mysql = require('mysql');

创建 mysql 数据连接

  var connection = mysql.createConnection(option);    connection.connect();    console.log(`打开数据库成功`);    return connection;

操作数据库

  let promise = new Promise((resolve, reject) => {      let sql2 = mysql.format(sql, paraArray);      console.log(`  #sql: ${sql2}`);      db.query(sql2,paraArray,(error, results, fields)=>{        let str ='  #result:';        str+=' error:'+error;        str+=' results:'+JSON.stringify(results);        str+=' fields:'+fields;        console.log(str+'n');        if (error) {          reject(error);        };        resolve(results,fields);      })    });

其他

由于我在koa 中使用 mysql, 我期望类似 同步的形式访问数据库。我的 MysqlDbHelper 类如下:

    # 概述      # 安装包          yarn add mysql        # 导入        var mysql = require('mysql'var mysql = require('mysql');      var env = require('./env.js');      var fs = require("fs");      var path = require('path');        const option = {        host     : env.db_host,        user     : env.db_user,        password : env.db_password,        database : env.db_name,      };        function querySync(db,sql,paraArray){        // console.log('para is'+JSON.stringify(paraArray));        let promise = new Promise((resolve, reject) => {          let sql2 = mysql.format(sql, paraArray);          console.log(`  #sql: ${sql2}`);          db.query(sql2,paraArray,(error, results, fields)=>{            let str ='  #result:';            str+=' error:'+error;            str+=' results:'+JSON.stringify(results);            str+=' fields:'+fields;            console.log(str+'n');            if (error) {              reject(error);            };            resolve(results,fields);          })        });        return promise;      }        let MysqlDbHelper = {          createConnection: function() {          var connection = mysql.createConnection(option);          connection.connect();          console.log(`打开数据库成功`);          return connection;        },          querySync: function(sql,paraArray){          let connection = this.createConnection();          let pro = querySync(connection,sql,paraArray);          pro.catch((err)=>{            console.error(' # on querySync: '+err);          }).finally((some)=>{            // if(conn){            //            // }          });          connection.end();          return pro;        }      };          global.db = MysqlDbHelper;        module.exports = MysqlDbHelper;    );      # 创建 mysql 数据连接            var connection = mysql.createConnection(option);          connection.connect();          console.log(`打开数据库成功`);          return connection;        #  操作数据库            let promise = new Promise((resolve, reject) => {            let sql2 = mysql.format(sql, paraArray);            console.log(`  #sql: ${sql2}`);            db.query(sql2,paraArray,(error, results, fields)=>{              let str ='  #result:';              str+=' error:'+error;              str+=' results:'+JSON.stringify(results);              str+=' fields:'+fields;              console.log(str+'n');              if (error) {                reject(error);              };              resolve(results,fields);            })          });

参考

https://github.com/mapbox/node-sqlite3/wiki/API#databasegetsql-param–callback