一个typescript版本的dao(数据库访问)层的封装

首先学会使用mustache语法

select * from {{key1}}字符中{{key1}}会进行匹配map中的key
例如:

    let sql = select * from {{key1}};
    let tableMapper = {
        "key1": "course",
    }
    let result = mustache.render(sql, tableMapper);
    console.log('result:', result);

此段代码select * from {{key1}}会被替换为select * from course

MysqL的dao层的封装dbMysqL.ts

let MysqL = require('MysqL2');
let mustache = require('mustache');

module.exports = class dbMysqL {
    private MysqLConnectPool: any;
    private tableMapper = {
        "key1": "course",
    }
    init(dbConfig: any): void {
        try {
            this.MysqLConnectPool = MysqL.createPool(dbConfig);
            console.debug('MysqL Adapter Pool generated successfully');
        } catch (error) {
            console.error('[MysqL.connector][init][Error]: ', error);
            throw new Error('Failed to initialized pool');
        }
    }
    executeQuery(sql: any, params: any): any {
        return new Promise((resolve, reject) => {
            this.MysqLConnectPool.getConnection(function (err: any, conn: any) {
                if (err) {
                    reject(err);
                } else {
                    conn.release();
                    conn.execute(sql, params, function (err: any, rows: any) {
                        if (err) {
                            reject(err);
                        } else {
                            resolve(rows);
                        }
                    });
                }
            });
        });
    }
    // 查找this.tableMapper键匹配表名
    renderQuery(sql: any, params?: any): any {
        sql = mustache.render(sql, this.tableMapper);
        return this.executeQuery(sql, params);
    }
}

相关文章

我最大的一个关于TypeScript的问题是,它将原型的所有方法(无...
我对React很新,我正在尝试理解子组件之间相互通信的简洁方法...
我有一个非常简单的表单,我将用户电子邮件存储在组件的状态,...
我发现接口非常有用,但由于内存问题我需要开始优化我的应用程...
我得到了一个json响应并将其存储在mongodb中,但是我不需要的...
我试图使用loadsh从以下数组中获取唯一类别,[{"listing...