如何检查来自Postgres BIGINT的值是否大于Number.MAX_SAFE_INTEGER?

时间:2019-06-06 04:46:31

标签: javascript postgresql bigint node-postgres

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;
});

0 个答案:

没有答案