Global

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