NodeJS操作mysql

3616 ワード

背景
KOA 2で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+'
'); 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+'
'); 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+'
'); if (error) { reject(error); }; resolve(results,fields); }) });

リファレンス
https://github.com/mapbox/node-sqlite3/wiki/API#databasegetsql-param--callback