Contents

JavaScript 如何處理長整數 (long/bigint) 數值的問題

最近發現 JS 無法正常 long (bigint) 數值長度,平常我們會很少用到,之前做報表也不需要吐給前端這個型別資料。但我今天發現這個,在某種情況我們會忽略這個情況。這邊順便做個紀錄。

什麼情況會用到 long 型別

資料表主鍵用 long (bigint)

我們資料庫因為怕有大量資料,我們型別資料會用 long。早期傳給 JavaScript 可能都不會有問題,但是到真正 long 型別可能就會出事了。

雪花演算法

雪花演算法,一個用程式安全產生主鍵方法,通常產生很長數字,所以我們都會用 long 型別。這個比上面很容易發現 JS 沒法正常吃到 long 型別。

Info

解決方法

這邊爬文找到一些方法做紀錄,感覺 long 轉 string 後端處理方式居多。前端通常對 pk 也不會有什麼運算。

後端 long 轉 string

這個很簡單,但麻煩物件導向需要額外設計物件,最後要怎麼優雅調整程式是一個問題。

Json.Serialize

前端處理 long 型別

有找到兩個方法,一個是用函示庫解決,另外一個原生支援 bigint。JSON 處理可以用 parse 解決,但寫起來也很麻煩。感覺前端工程師會不會配合用是一個問題…