Methods
(async) fetchJson(url, optopt) → {Promise}
- Description:
以瀏覽器與 node(18+) 內建之 fetch 取得 JSON 回應, 取代 axios(2026-09-07 起本套件不再依賴 axios)
與 axios 之語意對齊:
- 網路錯誤或非 2xx: axios 會 reject, fetch 只在網路錯誤 reject, 故此處對 !res.ok 亦 reject, 統一為 { kind: 'request', status, message }
- 回應非 JSON: axios 回原字串(呼叫端判 state 失敗), 此處 res.json() 失敗 reject { kind: 'parse', status, message }
- 成功: resolve 解析後之 JSON(對應 axios 之 res.data) 注意: node 端 fetch(undici) 不讀 HTTP_PROXY / HTTPS_PROXY 環境變數(axios 會), 需走 proxy 之部署須自行以 opt.dispatcher 注入 undici Agent
- Source:
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
url |
String | 輸入請求網址字串 |
||
opt |
Object |
<optional> |
{}
|
輸入 fetch 選項物件(method / headers / body / signal / dispatcher 等原樣傳給 fetch), 預設 {} |
Returns:
回傳 Promise, resolve 為 JSON 物件, reject 為 { kind: 'request'|'parse', status, message }
- Type
- Promise
mergePickKeysOnly(ltdtDb, rowsIn, keyDetect, pickKeys) → {Array}
- Description:
僅採納既有列之指定欄位變更, 其餘欄位、新增列、缺列(刪除)與順序一律以資料庫現值為準
用於 modeEditUsers='for:grups': 使用者身分由外部單一登入系統同步, 本系統只擁有群組指派(cgrups), 故 API 層須與 UI 一致只接受 cgrups 變更
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
ltdtDb |
Array | 資料庫現有列(select 結果, 依 order 排序後為基底) |
rowsIn |
Array | 前端/外部送入之整表列 |
keyDetect |
String | 對應列之鍵欄位(如 'id') |
pickKeys |
Array | 允許採納之欄位名陣列(如 ['cgrups']) |
Returns:
以資料庫列為基底、僅覆蓋 pickKeys 之新列陣列(順序同資料庫)
- Type
- Array