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"
}
]
[完]
留言區 / Comments
萌芽論壇