Nodejsは接続mysqlデータベースをカプセル化し、ライブラリを使用してデータベースの削除・変更操作を実現する


一、先にmysqlミドルウェアを取り付けるnpm i mysql --save
二、config.jsonプロファイル
{
    "host": "localhost",
    "port": "3306",
    "user": "root",
    "password": "root",
    "database": "xiaou"
}

三、パッケージmysql接続ライブラリ
const mysql = require('mysql'); //  mysql   
const to = require('../utils/async_to');
const fs = require('fs');
const path = require('path');

class DB {
    constructor({
        host = 'localhost', //    id  
        port = '3306', //   
        user = 'root', //   
        password = 'root', //  
        database = 'xiaou' //    
    } = {}) {
        this.conn = null;
        this.config = {
            host,
            port,
            user,
            password,
            database
        };
    };

    //1.    
    connect() {
        //       ,     ,   conn
        this.conn = mysql.createConnection(this.config);
        return new Promise((resolve, reject) => {
            //    
            this.conn.connect(err => {
                err ? reject(err) : resolve();
            });
        });
    };

    //2.       
    async query(sql, params = []) {
        //    query          
        let [err, data] = await to(this.connect());
        if (err) throw err; //          
        
        return new Promise((resolve, reject) => {
            this.conn.query(sql, params, (err, data) => {
                err ? reject(err) : resolve(data);
            });
        });
    };

    //3.    
    close() {
        this.conn.end();
    };
}

//         
let buf = fs.readFileSync(path.join(__dirname, 'config.json'));

//  DB     
module.exports = new DB(JSON.parse(buf.toString()));

上のライブラリにはasync_を組み合わせる必要があります.to使用
let to = (promise) => {
    return promise
        .then(data => [null, data])
        .catch(err => [err, null]);
};

module.exports = to;

四、使用方法
パッケージ時にasyncを使用していたので、使用注意 async await
const db = require('../db');
const to = require('../../utils/async_to');

register();
//    
let register = async(req, res) => {
    let result = await existUser(username);
    if (result.length > 0) {
        res.send(myError('       '));
        return;
    }

}

//        
async function existUser(username) {
	//    db.query
    let [err, data] = await to(db.query("SELECT member.username FROM member WHERE username=?", username));
    return err ? err : data;
};