Javascript当前不支持Postgres中的BIGINT类型。许多人通过将BIGINT作为字符串从数据库中解析出来来弥补这一点。可以,但是我尝试提出一个实现,如果整数小于或等于Number.MAX_SAFE_INTEGER,我将解析一个整数,否则返回null。
我该怎么做?
我正在使用https://node-postgres.com/
我有一个使用Number.isSafeInteger()的实现,但是我不确定在所有可能的值下它都是准确的。我觉得我对'parseInt()'和'Number.isSafeInteger()'没有足够的了解,知道这是否行得通。
val作为字符串类型传递。
MAX_SAFE_INTEGER如下所示。
> Number.MAX_SAFE_INTEGER;
9007199254740991
以下内容似乎是正确的。
> Number.isSafeInteger(parseInt('9007199254740993'));
false
这是当前的实现。
types.setTypeParser(20, (val) => {
const intVal = parseInt(val);
if (Number.isSafeInteger(intVal)) return intVal;
return null;
});