Node-RED:讀取及查詢 MySQL 資料庫中的資料表

2021/11/18 4,311 4 網站技術 , 資料庫 , Node.js , SQL , Node-RED

Node-RED 可以讓使用者在 Node.js 的環境中做非常多事情,只要拖拉節點,寫一點點的 Code,就能做到挺複雜的事情,而為了練習讀取 MySQL 資料庫並從其中查詢資料表內的所有資料,做了一次完整步驟的記錄,順便寫成教學給大家參考。首先您要先安裝「node-red-node-mysql」模組,才能透過 Node-RED 連接 MySQL,最後我們會在「除錯窗口」查看查詢到的資料。


▲ 打開 Node-RED 平台,點開右上方「三」,再選「設置」。

▲ 來到設置畫面,左側先選到「Palette」,接著將上方標籤切換至「安裝」,搜尋「mysql」這個關鍵字,就可以找到「node-red-node-mysql」模組,請安裝它。

▲ 模組安裝完後可從左側找到「mysql」節點,請將其拖拉至一旁的流程編輯區,最後雙擊它做節點編輯。

▲ 進入「mysql」節點的編輯視窗,在「屬性」→「Database」的右側點「✏️ 鉛筆」圖示編輯資料庫連線資訊。

▲ 打好 MySQL 資料庫連線資訊後點「添加」,關閉該視窗後還要再按「完成」才會回到流程編輯區。

▲ 接著還要拖拉出 inject(時間戳)、function(函數)和 debug(除錯)節點,依照上方截圖與 mysql 節點連接,我已經事先在資料庫內建好相關資料表,等等看 Node-RED 是否可以成功查詢到這些資料。

▲ 雙擊 function(函數)節點,在裡面加上以下原始碼:

msg.topic = "SELECT * FROM `test`";
return msg;

test 是要查詢的資料表名稱

最後記得點「完成」關閉節點編輯視窗,回到流程編輯區後到右上方點「部屬」。


▲ 部屬完畢後請點選流程編輯區內 inject(時間戳)節點左側的小方框以執行一次這個流程,接著您可以在右側的「除錯窗口」看到 Node-RED 從 MySQL 資料庫中抓出來的資料。

最後附上我匯出的 JSON,可以給大家參考及匯入修改用喔!

[
    {
        "id": "2b19ab871a45b641",
        "type": "tab",
        "label": "MySQL 資料庫讀取",
        "disabled": false,
        "info": ""
    },
    {
        "id": "c45b9c5dfeec3aef",
        "type": "mysql",
        "z": "2b19ab871a45b641",
        "mydb": "cc1dc14842e9419f",
        "name": "",
        "x": 110,
        "y": 180,
        "wires": [
            [
                "33153d3bc39dd4a6"
            ]
        ]
    },
    {
        "id": "41e91aa661a3b516",
        "type": "inject",
        "z": "2b19ab871a45b641",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 110,
        "y": 60,
        "wires": [
            [
                "5b2f10cd834b024c"
            ]
        ]
    },
    {
        "id": "5b2f10cd834b024c",
        "type": "function",
        "z": "2b19ab871a45b641",
        "name": "",
        "func": "msg.topic = \"SELECT * FROM `test`\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 110,
        "y": 120,
        "wires": [
            [
                "c45b9c5dfeec3aef"
            ]
        ]
    },
    {
        "id": "33153d3bc39dd4a6",
        "type": "debug",
        "z": "2b19ab871a45b641",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 130,
        "y": 240,
        "wires": []
    },
    {
        "id": "cc1dc14842e9419f",
        "type": "MySQLdatabase",
        "name": "",
        "host": "127.0.0.1",
        "port": "3306",
        "db": "test",
        "tz": "",
        "charset": "UTF8"
    }
]

[完]

贊助廣告 ‧ Sponsor advertisements

留言區 / Comments

萌芽論壇