Cả decimal
và bigint
loại có thể chứa các giá trị quá lớn để "vừa" với Number
của JavaScript :
-
Number.MAX_SAFE_INTEGER
(JS):9007199254740991 -
bigint
: -9223372036854775808 tới 9223372036854775807 -
decimal
: lên đến 131072 chữ số trước dấu thập phân; lên đến 16383 chữ số sau dấu thập phân
Nếu bạn khá chắc chắn rằng các giá trị trong cơ sở dữ liệu của mình sẽ phù hợp với Number
, bạn có thể chuyển đổi chúng (tôi không biết Knex, nhưng có lẽ nó có một số loại hệ thống móc mà bạn có thể sử dụng để chuyển đổi dữ liệu được truy xuất từ cơ sở dữ liệu) hoặc thay đổi lược đồ cơ sở dữ liệu của bạn để chứa các loại hàng "nhỏ hơn".
Ngoài ra, cũng có nhiều "số nguyên lớn" khác nhau gói cho Node mà bạn có thể sử dụng.