Node.js の mysql2 で MariaDB のデータを読む (Read)


Async/Await を使います。

maria_read.js
#! /usr/bin/node
// ---------------------------------------------------------------
//  maria_read.js
//
//                  Jun/04/2020
//
// ---------------------------------------------------------------
function compare_by_key_proc (left,right)
{
    var aa = left.key
    var bb = right.key

    var rvalue = 0

    if (aa < bb)
        {
        rvalue = -1
        }
    else if (aa > bb)
        {
        rvalue = 1
        }

    return  rvalue
}

// ---------------------------------------------------------------
function sort_key_proc (dict_aa)
{
    var array = new Array()

    for(var it in dict_aa)
        {
        array.push({'key':String (it), 'value':dict_aa[it]})
        }

    array.sort (compare_by_key_proc)

    return array
}

// ---------------------------------------------------------------
function dict_display_proc (dict_aa)
{
    const array_aa = sort_key_proc (dict_aa)

    array_aa.forEach (function(unit_aa,index)
        {
        const key = unit_aa.key
        const value = unit_aa.value

        var out_str = key + "\t"
        out_str += value["name"] + "\t"
        out_str += value["population"] + "\t"
        out_str += value["date_mod"]
        console.log (out_str)
        })  
}

// ---------------------------------------------------------------
async function read01 (mysql,user,password,data_base)
{
    try {
    var conn = await mysql.createConnection({
        host: 'localhost',
        user: user,
        password: password,
        database: data_base
        })
    const sql_str = 'select * from cities'
    const [rows, fields] = await conn.execute(sql_str)

    return rows
    } catch (ee) {
        console.log(ee)
        return ''
    } finally {
        if (conn && conn.connection) {
        conn.end()
    }
}

}

// ---------------------------------------------------------------
async function main()
{
    var mysql = require('mysql2/promise')
    const dotenv = require('dotenv')

    dotenv.config()

    const user = `${process.env.user}`
    const password = `${process.env.password}`
    const data_base = `${process.env.data_base}`

    const rows = await read01 (mysql,user,password,data_base)

    var dict_aa = new Object ()

    rows.forEach(function(row)
        {
        dict_aa[row.id] = {"name": row.name,
            "population": row.population,
            "date_mod": row.date_mod}
        })

    dict_display_proc (dict_aa)

    console.error ("*** 終了 ***")
}

// ---------------------------------------------------------------
console.error ("*** 開始 ***")
main()
// ---------------------------------------------------------------

実行コマンド

export NODE_PATH=/usr/lib/node_modules
./maria_read.js