結構:(時間戳)節點→(SQL)函式節點→(MySQL)節點→(資料處理)函式節點→(ui-chart)節點
(MySQL)節點的部分會將取得的資料輸出為 msg.payload,若有多個 select {寫在(SQL)函式節點} 則是以 msg.payload[0]、msg.payload[1] ... 以此類推輸出,如果我現在剛好 select 兩個資料,輸出後將有 msg.payload[0]、msg.payload[1]。
(資料處理)節點的部分我會設定輸出為 2,函數內會設兩個變數將資料分開:
var a = {
"series": [""],
"data": [msg.payload[0].map(item => ({
x: new Date(item.datetime).getTime(),
y: item.value
}))]
};
var b = {
"series": [""],
"data": [msg.payload[1].map(item => ({
x: new Date(item.datetime).getTime(),
y: item.value
}))]
};
return [{ payload: [a] }, { payload: [b] }];
這段程式碼是一個 JavaScript 函式,看起來是處理資料以生成兩個物件 a
與 b
,然後將它們放在陣列中並回傳。讓我解釋這段程式碼的每個部分:
var a = { ... };
這裡宣告了一個物件 a
,包含兩個屬性:
"series"
: 這是一個字串陣列,但在程式碼中是空的 [""]
。通常用來表示數據的系列名稱,這裡只有一個系列。
"data"
: 這也是一個陣列,其中包含一個對 msg.payload[0]
的 map
轉換。對 msg.payload[0]
進行了 .map()
轉換,將每個 item
物件轉換成具有 x
與 y
屬性的新物件。x
是 item.datetime
轉換成毫秒級的時間戳記,y
是 item.value
。
var b = { ... };
這裡宣告了另一個物件 b
,與 a
的結構相同,但是處理的是 msg.payload[1]
。
return [{ payload: [a] }, { payload: [b] }];
這行程式碼回傳一個陣列,陣列中包含兩個物件。每個物件都有一個 payload
屬性,而這個 payload
屬性的值分別是之前建立的 a
與 b
物件的陣列形式。
總結來說,這段程式碼的主要功能是將 msg.payload
中的資料進行轉換,然後將轉換後的結果以特定的結構包裝並回傳,其中 a
與 b
是兩個處理過的資料集合。這樣的處理通常在資料視覺化或圖表繪製時很有用,因為它將原始資料轉換成易於處理的格式。